3

我在 MVC 3.0 Windows Azure 应用程序中使用 SignalR。以下行ArgumentNullException仅在 Windows Azure 模拟器中引发。如果我运行 MVC 3.0 应用程序而不是云应用程序,它不会抛出。(我还没有尝试在部署的云中运行此代码)。

public static void RegisterRoutes(RouteCollection routes)
{
    RouteTable.Routes.MapHubs();
    // ...
}

message 旁边没有关于错误的其他信息Value cannot be null. Parameter name: instanceName。我不知道它是什么实例名称。

我不知道可能出了什么问题。为什么会这样?

编辑

这是完整的异常信息:

System.ArgumentNullException 未处理 HResult=-2147467261
消息=值不能为空。参数名称:instanceName
Source=Microsoft.AspNet.SignalR.Core ParamName=instanceName
StackTrace:在 Microsoft.AspNet.SignalR.Hosting.HostDependencyResolverExtensions.InitializeHost(IDependencyResolver resolver, String instanceName, CancellationToken hostShutdownToken) at Owin.OwinExtensions.UseType[T]( IAppBuilder builder, Object[] args) at Owin.OwinExtensions.MapHubs(IAppBuilder builder, String path, HubConfiguration configuration) at System.Web.Routing.SignalRRouteExtensions.<>c_ DisplayClass7.b _5(IAppBuilder map) at Microsoft.Owin.Host .SystemWeb.OwinAppContext.Initialize(动作1 startup) at Microsoft.Owin.Host.SystemWeb.OwinBuilder.Build(Action1 启动)在 System.Web.Routing.RouteCollectionExtensions.MapOwinPath(RouteCollection routes, String name, String pathBase, Action`1 startup) at System.Web.Routing.SignalRRouteExtensions.MapHubs(RouteCollection routes, String name, String path, HubConfiguration 配置)在 System.Web.Routing.SignalRRouteExtensions.MapHubs(RouteCollection 路由,字符串路径,HubConfiguration 配置)在 System.Web.Routing.SignalRRouteExtensions.MapHubs(RouteCollection 路由,HubConfiguration 配置)在 System.Web.Routing.SignalRRouteExtensions.MapHubs(RouteCollection路线)在 Cerebello.MvcApplication.RegisterRoutes(RouteCollection routes) 在 c:\Projetos\Cerebello\Cerebello\CerebelloWebRole\Global.asax.cs:CerebelloWebRole.Code.Helpers.RouteHelper 的第 25 行。RegisterAllRoutes() in c:\Projetos\Cerebello\Cerebello\CerebelloWebRole\Code\Helpers\RouteHelper.cs:第 82 行 CerebelloWebRole.WebRole.Run() 在 c:\Projetos\Cerebello\Cerebello\CerebelloWebRole\WebRole.cs:line 23 在 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.StartRoleInternal() 在 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.StartRole() 在 Microsoft.WindowsAzure.ServiceRuntime.Implementation.Loader.RoleRuntimeBridge.b__2() 在 System.Threading.ExecutionContext.RunInternal( ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx) 在 System.Threading.ExecutionContext。在 System.Threading.ThreadHelper.ThreadStart() InnerException 处运行(ExecutionContext executionContext,ContextCallback 回调,对象状态):

4

2 回答 2

3

不幸的是,这是一个已知问题:https ://github.com/SignalR/SignalR/issues/1616

请随时对这个问题发表评论。知道此错误发生在 Windows Azure 模拟器中很有用。如果您发现这个问题出现在部署中,那也绝对值得注意。

于 2013-03-24T09:43:05.180 回答
2

似乎MapHubs()是在 IIS 进程之外调用的,现在不允许。如果您有一个注册路由的方法,并且它在 IIS 内外运行的代码之间共享,您必须确保MapHubs()仅从 IIS 调用该方法。

于 2013-05-16T15:37:26.297 回答