【发布时间】:2016-03-31 10:35:31
【问题描述】:
我成功实现了基于 OWIN 的令牌认证。
但在实现此功能之前,当我尝试使用 HttpContext.Current.Request.Files[i].FileName 将已发布的文件多部分表单数据从我的 Angular 应用程序获取到 Web api 时,它很容易为我提供我想要的已发布文件。
但在实施基于 owin 的令牌身份验证后,我无法获取发布的文件,并且同一行出现错误。
通过在这个错误上花费更多的时间,我从互联网上找到了大部分答案,但我仍然无法解决我的问题。
并且提供的大多数解决方案都说您无法在像这样的自托管容器中访问HttpContext.Current.Request
app.UseWebApi(config);
我真的被困在这个问题上,所以请帮助我。
错误是:
第 306 行是:HttpContext.Current.Request.Files[i].FileName
发生错误。
ExceptionMessage:此方法或 HttpRequest.GetBufferlessInputStream 后不支持属性 已被调用。
异常类型:System.Web.HttpException
堆栈跟踪
在 System.Web.HttpRequest.EnsureFiles()
在 System.Web.HttpRequest.get_Files()
在 Nullplex.Rest.Controllers.UserBasicController.UpdateUserBasicByID(UserBasic UserBasic) 在 d:\BitBucket\PayBackRestApp \Nullplex.Rest\Controllers\UserBasicController.cs:306 行
在 lambda_method(Closure , Object , Object[] )
在 System.Web.Http.Controllers.ReflectedHttpActionDescriptor.ActionExecutor.c__DisplayClass10 .b__9(对象实例,Object[] 方法参数)
在 System.Web.Http.Controllers.ReflectedHttpActionDescriptor .ActionExecutor.Execute(Object 实例,Object[] 参数)
在 System.Web.Http.Controllers.ReflectedHttpActionDescriptor .ExecuteAsync(HttpControllerContext 控制器上下文,IDictionary2 参数,CancellationToken cancelToken )从先前抛出异常的位置结束堆栈跟踪
在 System.Runtime .CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task 任务)\r\n 在 System.Runtime.CompilerServices .TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)
在 System.Runtime.CompilerServices .TaskAwaiter1.GetResult()
在 System.Web.Http.Controllers.ApiControllerActionInvoker.d__0.MoveNext()从之前抛出异常的位置结束堆栈跟踪
在 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务 任务)\r\n 在 System.Runtime .CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务 任务)\r\n 在 System.Runtime .CompilerServices.TaskAwaiter1.GetResult()
在 System.Web.Http.Controllers.ActionFilterResult。 d__2.MoveNext()
【问题讨论】:
标签: c# .net angularjs asp.net-web-api owin