使用IIS时SignalR 2.0错误/信号器/集线器404(未找到)

Eri*_*itz 16 asp.net-mvc-4 signalr episerver-7

我在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
  • Microsoft.OWin,2.1.0.0
  • Microsoft.OWin.Host.SystemWeb,2.1.0.0
  • Microsoft.Owin.Security,2.0.0.0
  • Owin,1.0.0.0

Startup.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

        /// <summary>
        /// Configure SignalR
        /// </summary>
        /// <param name="app"></param>
        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
    }
}
Run Code Online (Sandbox Code Playgroud)

脚本包含

<script src="/Static/Frameworks/Scripts/jquery-1.10.2.js"></script>
<script src="/Static/Frameworks/Scripts/knockout-3.0.0.js"></script>
<script src="/Static/Frameworks/Scripts/modernizr.2.7.0.js"></script>
<script src="/Static/Frameworks/Scripts/jquery.signalR-2.0.1.js"></script>
<!-- also tried path ~/signalr/hubs -->
<script src="/signalr/hubs"></script>
Run Code Online (Sandbox Code Playgroud)

这不是从1.x SignalR更新的解决方案!

Phi*_*hil 17

只想把我的2美分投入.我有这个错误,结果是因为我有

<add key="owin:AutomaticAppStartup" value="false" />
Run Code Online (Sandbox Code Playgroud)

在我的web.config中.删除这一行修复了一切为我!


Eri*_*itz 13

该错误与本文中的错误完全相同 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
Run Code Online (Sandbox Code Playgroud)


Ton*_*ony 6

我刚刚遇到类似的问题,让"MoveShape"演示在新建的Win 2012R2服务器上运行.我通过添加角色/功能解决了这个问题:"Web服务器(IIS)" - >"应用程序开发"并选择".NET可扩展性4.5","ASP.NET 4.5","ISAPI扩展","ISAPI过滤器"和"WebSocket协议".

一旦我重新启动系统或IIS,演示开始工作.