asp.net-web-api – webapi批处理和委托处理程序
发布时间:2020-12-15 19:39:11 所属栏目:asp.Net 来源:网络整理
导读:基于我的 last post,我能够得到批量工作,直到一定程度.除了注册路由特定的处理程序,我还有2个委托处理程序 验证用户 记录 批处理程序通过委托处理程序来验证用户并记录请求.当messagehandlerinvoker开始发送子/嵌套请求时,抛出以下异常. System.ArgumentExce
基于我的
last post,我能够得到批量工作,直到一定程度.除了注册路由特定的处理程序,我还有2个委托处理程序
>验证用户 批处理程序通过委托处理程序来验证用户并记录请求.当messagehandlerinvoker开始发送子/嵌套请求时,抛出以下异常. System.ArgumentException was unhandled by user code HResult=-2147024809 Message=The 'DelegatingHandler' list is invalid because the property 'InnerHandler' of 'AuthenticationMessageHandler' is not null. Parameter name: handlers Source=System.Net.Http.Formatting ParamName=handlers StackTrace: at System.Net.Http.HttpClientFactory.CreatePipeline(HttpMessageHandler innerHandler,IEnumerable`1 handlers) at System.Web.Http.HttpServer.Initialize() at System.Web.Http.HttpServer.<EnsureInitialized>b__3() at System.Threading.LazyInitializer.EnsureInitializedCore[T](T& target,Boolean& initialized,Object& syncLock,Func`1 valueFactory) at System.Threading.LazyInitializer.EnsureInitialized[T](T& target,Func`1 valueFactory) at System.Web.Http.HttpServer.EnsureInitialized() at System.Web.Http.HttpServer.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) at System.Net.Http.HttpMessageInvoker.SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) at RoutingRequest.Service.Startup.BatchMessageHandler.<>c__DisplayClassd.<PrcoessRequest>b__b(Task`1 m) in C:CEIClientsFootlocker.comFL - Vendor Routing PortalsourceRoutingRequest.ServiceStartupBatchMessageHandler.cs:line 45 at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke() at System.Threading.Tasks.Task.Execute() InnerException: 有没有配置选项我缺少,或者我需要绕过委托处理程序? 编辑 public class AuthenticationMessageHandler : DelegatingHandler { protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) { SetCurrentUser(request); return base.SendAsync(request,cancellationToken); } private void SetCurrentUser(HttpRequestMessage request) { var values = new List<string>().AsEnumerable(); if (request.Headers.TryGetValues("routingrequest-username",out values) == false) return; var username = values.First(); var user = Membership.GetUser(username,true); if (user == null) { var message = string.Format("membership information for '{0}' could not be found.",username); throw new HttpRequestException(message); } var roles = Roles.GetRolesForUser(username); Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(user.UserName),roles); } } 基于Kiran的回答,一个子类的httpserver修复了一个问题并引入了另一个问题.我的角色提供者得到一个空引用异常.现在看看. 解决方法
Troy有一个伟大的博客解决这个问题在这里:
http://trocolate.wordpress.com/2012/07/19/mitigate-issue-260-in-batching-scenario/ (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 有没有办法使用System.Net.Mail.SendAsync()捕获
- AJAX分页的代码(后台asp.net)
- ASP.NET Handler(ashx)vs MVC Controller Action用于下载文
- asp.net – 如何处理错误时使用jQuery.ajax()?
- asp.net – UseJwtBearerAuthentication返回401
- asp.net-mvc – 将默认日期格式应用于ASP.NET MVC 3应用程序
- asp.net – 如何防止低效的SQL查询减慢数据库服务器的速度
- asp.net-mvc-4 – 使用MVC 4 SimpleMembership与现有的数据
- asp.net-mvc-3 – 使用asp.net mvc本地化jquery验证3
- .net – 设置页面标题不起作用
推荐文章
站长推荐
- 在ASP.NET中更改doctype
- asp.net-mvc – ASP.NET MVC:如果视图有错误,如
- asp.net-mvc – 在默认的asp.net mvc 5模板中输入
- asp.net-mvc-3 – ASP.NET MVC 3:将应用程序移动
- asp.net网站默认文件在子文件夹中
- 在ASP.NET 5中获取AuthenticationProperties
- asp.net-mvc-3 – 使用MVC3中的模型绑定ListBox
- asp.net-mvc – Actionresult vs JSONresult
- asp.net-core – 为什么默认的mvc6模板针对多个D
- asp.net-mvc – 当添加非mvc路由时,Html.ActionL
热点阅读