我在MVC 3.0 Windows Azure应用程序中使用SignalR。
以下行仅在Windows Azure模拟器中引发ArgumentNullException
。如果我运行MVC 3.0应用程序而不是云应用程序,它不会抛出。 (我没有尝试在部署的云中运行此代码)。
public static void RegisterRoutes(RouteCollection routes)
{
RouteTable.Routes.MapHubs();
// ...
}
邮件Value cannot be null.
Parameter name: instanceName
旁边没有关于错误的其他信息。我不知道它是什么实例名称。
我不知道可能出现什么问题。 为什么会这样?
修改
这是完整的异常信息:
System.ArgumentNullException未处理HResult = -2147467261
Message = Value不能为null。参数名称:instanceName
Source = Microsoft.AspNet.SignalR.Core ParamName = instanceName
堆栈跟踪: 在Microsoft.AspNet.SignalR.Hosting.HostDependencyResolverExtensions.InitializeHost(IDependencyResolver) resolver,String instanceName,CancellationToken hostShutdownToken) at Owin.OwinExtensions.UseType [T](IAppBuilder builder,Object [] args) 在Owin.OwinExtensions.MapHubs(IAppBuilder构建器,字符串路径,HubConfiguration配置) 在System.Web.Routing.SignalRRouteExtensions。<> c_ DisplayClass7.b _5(IAppBuilder) 地图) 在Microsoft.Owin.Host.SystemWeb.OwinAppContext.Initialize(Action1 startup) at Microsoft.Owin.Host.SystemWeb.OwinBuilder.Build(Action
1 startup) 在System.Web.Routing.RouteCollectionExtensions.MapOwinPath(RouteCollection routes,String name,String pathBase,Action`1 startup) 在System.Web.Routing.SignalRRouteExtensions.MapHubs(RouteCollection routes,String name,String path,HubConfiguration configuration) 在System.Web.Routing.SignalRRouteExtensions.MapHubs(RouteCollection routes,String path,HubConfiguration配置) 在System.Web.Routing.SignalRRouteExtensions.MapHubs(RouteCollection 路由,HubConfiguration配置) 在System.Web.Routing.SignalRRouteExtensions.MapHubs(RouteCollection 路由) 在Cerebello.MvcApplication.RegisterRoutes(RouteCollection路由)中 C:\ Projetos \小脑\小脑\ CerebelloWebRole \ Global.asax.cs中:线 25 在CerebelloWebRole.Code.Helpers.RouteHelper.RegisterAllRoutes()in C:\ Projetos \小脑\小脑\ CerebelloWebRole \代码\助手\ RouteHelper.cs:线 82 在CerebelloWebRole.WebRole.Run()中的c:\ Projetos \ Cerebello \ Cerebello \ CerebelloWebRole \ WebRole.cs:第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回调,对象状态,布尔值 preserveSyncCtx) at System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback callback,Object state,Boolean preserveSyncCtx) 在System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback回调,对象状态) 在System.Threading.ThreadHelper.ThreadStart()InnerException:
答案 0 :(得分:3)
不幸的是,这是一个已知问题:https://github.com/SignalR/SignalR/issues/1616
请随时评论此问题。知道在Windows Azure模拟器中发生此错误很有用。如果您发现此问题出现在部署中,那么这也是值得注意的。
答案 1 :(得分:2)
似乎{IIS}进程外部正在调用MapHubs()
,现在不允许这样做。如果您有一个注册路由的方法,并且它在IIS内外运行的代码之间共享,则必须确保仅从IIS中调用MapHubs()
。