Asp.net-Mvc-4

使用 IIS 時 SignalR 2.0 錯誤 /signalr/hubs 404(未找到)

  • May 27, 2017

我在 EPiServer 7.5(一個 MVC4 框架)中遇到了 SignalR 2.0 的一些問題。我得到的只是一個 404 錯誤

獲取<http://web.com/signalr/hubs> 404(未找到)

我在 Windows 2012 R2 伺服器上託管所有內容。另外值得注意的是,當從 Visual Studio 在 IIS Express 中執行所有內容時,該解決方案可以工作,但不能在 IIS 8.5 中執行

到目前為止我所做的是添加 SingalR 引用。

  • Microsoft.AspNet.SignalR.Client,2.0.0.0
  • Microsoft.AspNet.SignalR.Core,2.0.0.0
  • Microsoft.AspNet.SignalR.System.Web,2.0.0.0
  • 微軟.OWin, 2.1.0.0
  • Microsoft.OWin.Host.SystemWeb,2.1.0.0
  • Microsoft.Owin.Security, 2.0.0.0
  • 歐文,1.0.0.0

啟動.cs

該啟動是在應用程序啟動時初始化的,因此似乎可以工作。

[assembly: OwinStartup(typeof(Web.Startup))]
namespace Web
{
   public class Startup
   {
       #region Local variables

       private static readonly ILog Logger = LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

       #endregion

       #region Methods

       /// &lt;summary&gt;
       /// Configure SignalR
       /// &lt;/summary&gt;
       /// &lt;param name="app"&gt;&lt;/param&gt;
       public void Configuration(IAppBuilder app)
       {
           try
           {
               Logger.MethodCallEntry();

               // Any connection or hub wire up and configuration should go here
               //app.MapSignalR(); // Doesn't work either
               var hubConfiguration = new HubConfiguration
               {
                   EnableDetailedErrors = true,
                   EnableJavaScriptProxies = false
               };

               app.MapSignalR("/signalr", hubConfiguration);
           }
           catch (Exception ex)
           {
               Logger.Error("Failed to initialize or map SignalR", ex);
           }
           finally
           {
               Logger.MethodCallExit();
           }
       }

       #endregion
   }
}

腳本包含

&lt;script src="/Static/Frameworks/Scripts/jquery-1.10.2.js"&gt;&lt;/script&gt;
&lt;script src="/Static/Frameworks/Scripts/knockout-3.0.0.js"&gt;&lt;/script&gt;
&lt;script src="/Static/Frameworks/Scripts/modernizr.2.7.0.js"&gt;&lt;/script&gt;
&lt;script src="/Static/Frameworks/Scripts/jquery.signalR-2.0.1.js"&gt;&lt;/script&gt;
&lt;!-- also tried path ~/signalr/hubs --&gt;
&lt;script src="/signalr/hubs"&gt;&lt;/script&gt;

這不是從 1.x SignalR 更新的解決方案!

該錯誤與這篇文章中的完全相同 <http://blogs.msdn.com/b/praburaj/archive/2013/12/02/owin-startup-class-not-detected.aspx>

解決方案是完全清空 asp.net 記憶體

在 PowerShell 中執行

net stop w3svc
Remove-Item -Path "C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\root\*" -Force -Recurse
Remove-Item -Path "C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\*" -Force -Recurse
net start w3svc

只是想投入我的 2 美分。我遇到了這個錯誤,最終是因為我有

&lt;add key="owin:AutomaticAppStartup" value="false" /&gt;

在我的 web.config 中。刪除這條線為我解決了所有問題!

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