asp.net-mvc-4 – 无法通过委派Handler Web API返回HTTP Unautho
发布时间:2020-12-16 06:33:04 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试在DelegatingHandler中实现身份验证.以下是一个例子. public class AuthHandler: DelegatingHandler{ protected override TaskHttpResponseMessage SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) { var auth = requ
我正在尝试在DelegatingHandler中实现身份验证.以下是一个例子.
public class AuthHandler: DelegatingHandler { protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request,CancellationToken cancellationToken) { var auth = request.Headers.Authorization; if (!auth.Scheme.Equals("UberSecureScheme")) { return new Task<HttpResponseMessage>(() => new HttpResponseMessage(HttpStatusCode.Unauthorized) { Content = new StringContent("You have no token") }); } return base.SendAsync(request,cancellationToken); } } 这永远不会执行任务,也不会返回任何响应.如果我改变代码来做一些任务延续的事情,比如我已经看过一些例子,那么首先执行Controller. return base.SendAsync(request,cancellationToken) .ContinueWith(task => { var response = task.Result; response.StatusCode = HttpStatusCode.Unauthorized; return response; }); 这显然是一场灾难.我不能让某人删除,然后告诉他们他们是未经授权的. 我也遇到过有人说只是抛出一个HTTPResponseException.无论我在那里放置什么状态代码(404,401,无论如何),浏览器总是会收到500内部服务器错误. 解决方法if (!auth.Scheme.Equals("UberSecureScheme")) { var response = request.CreateResponse(HttpStatusCode.Unauthorized); response.ReasonPhrase = "You have no token"; return Task.FromResult<HttpResponseMessage>(response); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 有没有办法将一个onclick事件添加到ASP.NET标签服务器控件?
- asp.net-mvc – POST后重定向不会更改URL
- asp.net – 在自动生成的GridView列中防止HTML编码
- 从ASP.net Web服务返回大量数据时有哪些好的做法?
- query-string – asp .net 2.0上的最大查询字符串长度
- asp.net – 如何限制文本框中允许的字符数?
- asp.net-mvc-routing – 在.NET MVC 4.0 URL结构中强制使用
- asp.net-mvc – 针对移动应用的REST API的OAuth
- asp.net-mvc – 运行Asp.Net Mvc作为OWIN中间件?
- asp.net – 如何使用EntityFramework种子数据代码第一次迁移