asp.net-web-api – 使用自定义授权测试异步Web api方法
发布时间:2020-12-16 09:39:44 所属栏目:asp.Net 来源:网络整理
导读:我有一个WebApi方法看起来或多或少像这样: public async TaskHttpResponseMessage Get(Guid id){ var foo = await Store.GetFooAsync(id); if (foo.BelongsTo != User.Identity.Name) throw new HttpResponseException(HttpStatusCode.Forbidden); //return
我有一个WebApi方法看起来或多或少像这样:
public async Task<HttpResponseMessage> Get(Guid id) { var foo = await Store.GetFooAsync(id); if (foo.BelongsTo != User.Identity.Name) throw new HttpResponseException(HttpStatusCode.Forbidden); //return foo here } 这似乎在实际应用程序中工作正常,其中自定义IHttpModule在HttpContext.User和Thread.CurrentPrincipal中设置主体. 但是,从单元测试中调用时: Thread.CurrentPrincipal = principal; var response = controller.Get(id).Result; 用户在等待(即继续)后重置,因此测试失败.在R#8下运行时会发生这种情况,R#7没有发生这种情况. 我的解决方法是在第一次等待之前保存当前的主体,但它只是满足测试运行者需求的黑客. 如何调用我的控制器方法并确保continuation与原始调用具有相同的主体? 解决方法
我通过升级MVC包修复了这个问题.新版本将主体保存在ApiController.RequestContext.Principal中,与Thread.CurrentPrincipal分开,完全避免了问题.
我的新测试代码以: controller.RequestContext.Principal = principal; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net – 如何在没有查找AspNetUserRoles表的情况下获取W
- asp.net – MVC – 用户必须在IIS Recycle上重新认证
- asp.net – 为什么在调用Application_Error()时Response.St
- asp.net – 试试Catch块没有捕获?
- asp.net – 没有角色的声明?
- 在ASP.NET中如何处理未处理的异常?
- asp.net-mvc – 将mvc3中的下拉列表绑定到字典?
- asp.net – 如何在单独的dll项目中配置WCF
- asp.net – 按钮点击方法在页面加载后运行,这意味着页面不会
- asp.net-mvc-3 – “字段宽度必须是数字.”在客户端
推荐文章
站长推荐
- asp.net – jQuery blackberry ajax问题
- 如何在asp.net中使用javascript为下拉列表框设置
- asp.net – scriptresource.axd 404错误在asp ne
- asp.net – 在不过度使用meta:resourcekey的情况
- asp.net-mvc – MVC [HttpGet]控制器注释可选吗?
- ASP.Net CMS推荐,果园,Sitefinity,Umbraco或N2?
- entity-framework-4 – 当超出范围时,Ninject不调
- asp.net – 如何在OnActionExecuting中获取当前路
- asp.net – 如何增加IIS 7.0上的线程池线程
- .net core使用sentry添加程序异常报警功能
热点阅读