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)
我已经尝试重新安装程序集但无济于事.
尽管将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
您所看到的是一个由以下内容创建的日志条目: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-assembly和how-to-prevent-reflectiontypeloadexception-when-calling-assembly-gettypes解释了ReflectedHubDescriptorProvider中使用的try catch构造.它只是忽略了它无法从Microsoft.AspNet.SignalR.Owin程序集加载的类/集线器.
ReflectionTypeLoadException包含一个LoaderExceptions,要访问它,您可以下载源代码并在ex.LoaderExceptions上添加跟踪或在源代码中添加断点.
| 归档时间: |
|
| 查看次数: |
1928 次 |
| 最近记录: |