4

在 v2 之前:

RouteTable.Routes.MapHubs();

在 v2 中,MapHubs 不再存在。wiki 说要添加一个 Startup 类和一个 Configuration 方法以及对 app.MapHubs() 的调用。

namespace MyAssembly 
{
public class Startup
{
    public void Configuration(IAppBuilder app)
    {
        //Before v2
        //RouteTable.Routes.MapHubs();

        app.MapHubs();
    }
}
}

但是该方法永远不会被调用,不会发生错误,并且......没有设置集线器。

我想有一些代码要添加到 global.asax.cs

秘诀是什么?

4

4 回答 4

1

编辑:删除不相关的行。

解决方案 !

<appSettings>
    <add key="owin:AppStartup" value="MyNameSpace.Startup, MyNameSpace" />
</appSettings>

加上更新 MVC4(不是预发布,而是最新的稳定版本)和 SignalR/owin nugets。

加上修复js客户端中的错误:

  • 如果 disconnectTimeout=999000 则它被禁用。必须在服务器端设置: GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromSeconds(999); 注意:服务器端不能设置值 < 6(如果 DisconnectTimeout < 6,signalr 会抛出异常)。所以使用这个神奇的数字。
  • webSockets:在sockettransport中设置connection.socket = null,否则在(手动)调用停止后调用开始失败
  • serverSentEvents:防止窗口卸载时重新连接尝试导致的错误
  • 如果信号器集线器 url 不可用(暂时),chrome 会失败并出现异常:与其放弃尝试下一个可用的协议/尝试重新连接。
于 2013-07-26T06:47:48.523 回答
1

尝试定义 [assembly : OwinStartup(typeof(MyAssembly.Startup))] 以查看您的 Startup 类是否被选中。

于 2013-07-25T15:56:42.143 回答
0

在 web.config 中必须有一个类的完全限定名,例如

<appSettings>
    <add key="owin:AppStartup" value="**My.Name.Space.Startup**, **AssemblyName**" />
</appSettings>

当我放置命名空间而不是程序集名称时遇到问题,但是使用完全限定名称它可以在没有对 web.config 进行任何其他更改的情况下工作!

更新:我还按照链接中的步骤操作:http ://www.asp.net/vnext/overview/latest/release-notes#TOC13 ,即删除了一个 NuGet 包“Microsoft.AspNet.SignalR.Owin”

于 2013-08-02T23:03:09.727 回答
0

我能够让 2.0 beta 工作

  • 删除对旧版本 SignalR 的所有引用,即 nuget 卸载库并仔细检查 /bin

  • 通过包管理器控制台安装 SignalR 2.0.0-beta2Install-Package Microsoft.AspNet.SignalR -Pre

  • 遵循此处概述的 1.x 到 2.0 迁移中的步骤

  • 最重要的是更改项目配置以使用本地 IIS Web 服务器而不是 Visual Studio Developer Server (Cassini)。

我在此处发布的问题/答案中的更多信息

于 2013-07-31T00:38:38.290 回答