信号器装配加载问题OWIN

MrB*_*liz 8 c# asp.net signalr asp.net-web-api owin

尝试在Microsoft.AspNet.SignalR.Owin程序集中加载类时出现此错误.

执行离开Configuration方法后抛出异常startup.cs.我已经注册了一个全局异常处理程序来尝试捕获异常,但它没有被捕获.

public async override Task HandleAsync(ExceptionHandlerContext context, CancellationToken cancellationToken)
        {

            var exception = context.Exception;

            const string genericErrorMessage =  "An unexpected error occured";
            var response = context.Request.CreateResponse(HttpStatusCode.InternalServerError,
                new
                {
                    Message = genericErrorMessage
                });

            response.Headers.Add("X - Error & ", genericErrorMessage);
            context.Result = new ResponseMessageResult(response);
        }
Run Code Online (Sandbox Code Playgroud)

config.Services.Replace(typeof(IExceptionHandler), new GlobalExceptionHandler());

Global.asax中的Application_Error方法也没有捕获它

 protected void Application_Error(object sender, EventArgs e)
    {
        HttpContext ctx = HttpContext.Current;
        KeyValuePair<string, object> error = new KeyValuePair<string, object>("ErrorMessage", ctx.Server.GetLastError().ToString());
        ctx.Response.Clear();
    }
Run Code Online (Sandbox Code Playgroud)

我已经尝试重新安装程序集但无济于事.

2 的SO问题,但没有解决办法

尽管将Visual Studio配置为打破每种可能的异常类型,但仍然没有被捕获.我可以告诉异常的唯一地方是输出窗口.事件日志中没有记录任何内容.

有关信息,这是使用VS 2015

SignalR.ReflectedHubDescriptorProvider警告:0:搜索集线器时,无法加载程序集"Microsoft.AspNet.SignalR.Owin,Version = 1.2.2.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35"中的某些类.[...\Microsoft.AspNet.SignalR.Owin.dll]

原始异常类型:ReflectionTypeLoadException

原始异常消息:无法加载一个或多个请求的类型.检索LoaderExceptions属性以获取更多信息.

编辑:我正在运行所有最新的信号器包

已安装的信号器相关包

Autofac.SignalR v 3.0.2

Microsoft.AspNet.SignalR v2.2.0

Microsoft.AspNet.SignalR.Core v2.2.0

Microsoft.AspNet.SignalR.JS v2.2.0

Microsoft.AspNet.SignalR.Owin v1.2.2

Microsoft.AspNet.SignalR.SelfHost v2.2.0

Microsoft.AspNet.SignalR.SystemWeb v2.2.0

Pet*_*ter 7

您所看到的是一个由以下内容创建的日志条目:ReflectedHubDescriptorProvider

102 try 
103             { 
104                 return a.GetTypes(); 
105             } 
106             catch (ReflectionTypeLoadException ex) 
107             { 
108                 _trace.TraceWarning("Some of the classes from assembly \"{0}\" could Not be loaded when searching for Hubs. [{1}]\r\n" + 
109                                     "Original exception type: {2}\r\n" + 
110                                     "Original exception message: {3}\r\n", 
111                                     a.FullName, 
112                                     a.Location, 
113                                     ex.GetType().Name, 
114                                     ex.Message); 


116                 return ex.Types.Where(t => t != null); 
117             } 
Run Code Online (Sandbox Code Playgroud)

异常可能是由于其中一个已加载的程序集中缺少依赖项,信号器代码正在迭代所有程序集.因此原因可以是任何当前加载的组件.有趣的是:get-all-types-in-an-assemblyhow-to-prevent-reflectiontypeloadexception-when-calling-assembly-gettypes解释了ReflectedHubDescriptorProvider中使用的try catch构造.它只是忽略了它无法从Microsoft.AspNet.SignalR.Owin程序集加载的类/集线器.

ReflectionTypeLoadException包含一个LoaderExceptions,要访问它,您可以下载源代码并在ex.LoaderExceptions上添加跟踪或在源代码中添加断点.


MrB*_*liz 5

我通过创建一个新项目并将所有内容复制到新的/再次重新安装包来解决这个问题.

我不再得到这个错误,但我的信号器问题并没有消失,所以看起来这个是一个红色的鲱鱼.