asp.net-web-api – webapi批处理和委托处理程序
发布时间:2020-05-23 03:32:48 所属栏目:asp.Net 来源:互联网
导读:基于我的 last post,我能够得到批量工作,直到一定程度.除了注册路由特定的处理程序,我还有2个委托处理程序 验证用户 记录 批处理程序通过委托处理程序来验证用户并记录请求.当messagehandlerinvoker开始发送子/嵌套请求时,抛出以下异常. System.ArgumentExcep
|
基于我的 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 – 以编程方式将Textbox TemplateField列添加到Gri
- asp.net-mvc – 处理onchange事件在HTML.DropDownList Razo
- 实体框架 – Unity Lifetime Managers和EF Data Context –
- 如何向ASP.NET Core 1.0 MVC项目添加项目引用
- asp.net – 可以通过从web.config中删除条目来关闭所有的MV
- asp.net-mvc – 错误:无法在LINQ to Entities查询中构造实
- asp.net – 如何将会话超时设置超过20分钟.
- asp.net-mvc – 如何获取Azure网站上的错误详细信息
- asp.net – 禁用帐户锁定与SqlMembershipProvider
- asp.net-mvc – 对HTTP POST请求的正确响应是什么?
推荐文章
站长推荐
- 在加载asp.net页面时显示gif
- asp.net – gridview在viewstate中保存数据吗?
- 获取当前ASP.NET Web Api 2操作的URL
- asp.net-mvc – Editor为int选择一个字符串模板
- 在ASP.NET MVC中模拟User.Identity
- asp.net-mvc-3 – insert命令需要插入数据绑定设
- asp.net-mvc – ASP.Net MVC 2验证是否需要更多的
- asp.net – 基于web.config的url重写的绝对最小内
- asp-classic – 如何使用经典asp中的vbscript下载
- asp.net – 是否可以在没有Javascript的情况下进
热点阅读
