最近在做關于WebApi,SignalR的測驗(剛接觸)。
目前已經成功的在asp.net webapi專案中加入了SignalR,可以用過IIS部署起來。
然后又想在控制臺程式中部署,結果遇到了問題。
1、創建控制臺專案
2、Nuget引入 "Microsoft.AspNet.WebApi.SelfHost"
3、添加Controller控制器
4、在Program.cs中寫入如下代碼:
class Program
{
static void Main(string[] args)
{
// WebApi SelfHost
var config = new HttpSelfHostConfiguration("http://localhost:22");
config.Routes.MapHttpRoute(
"API Default", "api/{controller}/{id}",
new { id = RouteParameter.Optional });
using (HttpSelfHostServer server = new HttpSelfHostServer(config))
{
server.OpenAsync().Wait();
Console.WriteLine("Press Enter to quit.");
Console.ReadLine();
}
}
}
5、這樣就實作了把WebApi從IIS轉到控制臺程式中的目標。
6、接下來,想把SignalR添加進去
7、Nuget引入:“Microsoft.AspNet.SignalR”
8、增加一個MessageHub類,繼承Hub抽象類
9、增加一個Startup類
[assembly: OwinStartup(typeof(SelfHost.SignalR.Startup))]
namespace SelfHost.SignalR
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// 有關如何配置應用程式的詳細資訊,請訪問 https://go.microsoft.com/fwlink/?LinkID=316888
app.MapSignalR();
////app.UseCors();
////跨域支持
//app.UseCors(CorsOptions.AllowAll);
//app.RunSignalR<>();
//app.UseSignalR(routes =>
//{
// routes.MapHub<SignalrHubs>("signalrHubs");
//});
//訊息總線--集線器Hub配置
app.Map("/MessageHub", map =>
{
//SignalR允許跨域呼叫
map.UseCors(CorsOptions.AllowAll);
HubConfiguration config = new HubConfiguration()
{
//禁用JavaScript代理
EnableJavaScriptProxies = false,
//啟用JSONP跨域
EnableJSONP = true,
//反饋結果給客戶端
EnableDetailedErrors = true
};
map.RunSignalR(config);
});
//WebApi允許跨域呼叫
app.UseCors(CorsOptions.AllowAll);
}
}
}
10、后續應該怎么操作?如果是Signalr單獨部署到控制臺,可以通過引入SignalR.SelfHost,使用WebApp.Start<StartUp>(string url)的方式。
求指導
uj5u.com熱心網友回復:
居然沒人回復啊uj5u.com熱心網友回復:
樓主這個問題現在你解決了嗎
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/131113.html
標籤:C#
下一篇:aspx web.config
