Asp.net

.NET Signalr MapConnection 已過時?

  • November 22, 2017

我是 .Net 和 SignalR 的新手。我正在查看一位前同事編寫的一些程式碼,他將此行添加到 Route Config 中,該行現在拋出錯誤,說它已過時,但我讀過的所有文件都建議以這種方式映射連接。

namespace FailureInvestigationToolbox {
public class RouteConfig {
   public static void RegisterRoutes( RouteCollection routes ) {
       routes.IgnoreRoute( "{resource}.axd/{*pathInfo}" );

       routes.MapRoute(
           name :"Default",
           url :"{controller}/{action}/{id}",
           defaults :new {
               controller = "fit",
               action = "Index",
               id = UrlParameter.Optional
           }
       );

       RouteTable.Routes.MapConnection<TaskListPersistence>("taskpersist", "/taskpersist");
   }
}
}

錯誤是:

System.Web.Routing.SignalRRouteExtensions.MapConnection<T>    
(System.Web.Routing.RouteCollection, string, string)' is obsolete: 
'Use IAppBuilder.MapSignalR<TConnection> in an Owin Startup class. See
http://go.microsoft.com/fwlink/?LinkId=320578 for more details.'  
C:\fit\FailureInvestigationToolbox\App_Start\RouteConfig.cs

是否有可能我的 SignalR 安裝有問題,或者 IAppBuilder 映射事情的方式是我應該做的事情……如果是這樣,怎麼辦?

我正在使用 SignalR 2.0.3

是的,您必須使用IAppBuilder. 添加一個 OwinStartup類,並在其Configuration方法中呼叫您收到MapConnection<T>的參數。app那應該行得通。檢查這里這裡

你可以用這篇文章

1.在全域應用類中,去掉對MapHubs的呼叫。

protected void Application_Start(object sender, EventArgs e)
{
RouteTable.Routes.MapHubs();
}

2.右鍵點擊解決方案,然後選擇添加、新建項…。在對話框中,選擇Owin Startup Class。將新類命名為 Startup.cs。

3.將Startup.cs的內容替換為以下程式碼:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{

   public class Startup
   {
       public void Configuration(IAppBuilder app)
       {
           app.MapSignalR();
       }
   }
}

引用自:https://stackoverflow.com/questions/23635398