C# 如何调试此Windows身份验证问题?
在将身份验证机制更改为Windows身份验证后,我在服务调用期间遇到异常。由于无法诊断,我有点失去了意志。这似乎是埋在MVC认证深处的一个非常普遍的错误 错误消息是:C# 如何调试此Windows身份验证问题?,c#,asp.net-mvc,authentication,asp.net-web-api,windows-authentication,C#,Asp.net Mvc,Authentication,Asp.net Web Api,Windows Authentication,在将身份验证机制更改为Windows身份验证后,我在服务调用期间遇到异常。由于无法诊断,我有点失去了意志。这似乎是埋在MVC认证深处的一个非常普遍的错误 错误消息是: Response status code does not indicate success: 500 (Internal Server Error) 我的调用堆栈如下(出于隐私考虑,我的方法调用被删除): EnsureSuccessStatusCode由于调用返回的500而抛出 它没有击中我的任何代码。我在另一端的入口点上有断
Response status code does not indicate success: 500 (Internal Server Error)
我的调用堆栈如下(出于隐私考虑,我的方法调用被删除):
EnsureSuccessStatusCode
由于调用返回的500而抛出
它没有击中我的任何代码。我在另一端的入口点上有断点。那么是什么导致了这一现象呢?如何调试它并获得足够的信息来修复它?我觉得一定有办法获得更多我不知道的信息
如果有人能告诉我如何诊断问题,我不一定需要解决方案。以下是答案中的解决方案:
显然,我不建议将其用于生产代码(或作为使用异步代码的一种方式),但这将为调试服务调用提供准确的错误消息
实际上,在实际收到错误消息的五分钟内,错误被调试并修复。以下是答案中的解决方案:
显然,我不建议将其用于生产代码(或作为使用异步代码的一种方式),但这将为调试服务调用提供准确的错误消息
实际上,错误在实际收到错误消息后的五分钟内被调试和修复。在visual studio的内置web主机上运行时,您会遇到500个错误,还是在完全安装的IIS版本上运行时会看到这些错误?使用内置web主机运行。在我编写的原型应用程序中,一切都是这样工作的,遗憾的是,迁移到完整的IIS并不是一个选项,因为这是我们公司的工作方式……在visual studio的内置web主机上运行时,您会遇到500个错误吗?或者在完全安装的IIS版本上运行时,您会看到这些错误吗?使用内置web主机运行。在我编写的一个原型应用程序中,一切都是这样工作的,遗憾的是,迁移到完整的IIS并不是一个选项,因为这是我们公司的工作方式。。。
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +137
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +65
System.Web.Mvc.Async.TaskAsyncActionDescriptor.EndExecute(IAsyncResult asyncResult) +97
System.Web.Mvc.Async.<>c__DisplayClass37.<BeginInvokeAsynchronousActionMethod>b__36(IAsyncResult asyncResult) +17
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +48
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) +32
System.Web.Mvc.Async.AsyncInvocationWithFilters.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3d() +50
System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225
System.Web.Mvc.Async.<>c__DisplayClass46.<InvokeActionMethodFilterAsynchronouslyRecursive>b__3f() +225
System.Web.Mvc.Async.<>c__DisplayClass33.<BeginInvokeActionMethodWithFilters>b__32(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +48
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) +34
System.Web.Mvc.Async.<>c__DisplayClass2b.<BeginInvokeAction>b__1c() +26
System.Web.Mvc.Async.<>c__DisplayClass21.<BeginInvokeAction>b__1e(IAsyncResult asyncResult) +100
System.Web.Mvc.Async.WrappedAsyncResult`1.CallEndDelegate(IAsyncResult asyncResult) +10
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) +27
System.Web.Mvc.Controller.<BeginExecuteCore>b__1d(IAsyncResult asyncResult, ExecuteCoreState innerState) +13
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) +36
System.Web.Mvc.Controller.<BeginExecute>b__15(IAsyncResult asyncResult, Controller controller) +12
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +22
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) +26
System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) +10
System.Web.Mvc.MvcHandler.<BeginProcessRequest>b__5(IAsyncResult asyncResult, ProcessRequestState innerState) +21
System.Web.Mvc.Async.WrappedAsyncVoid`1.CallEndDelegate(IAsyncResult asyncResult) +29
System.Web.Mvc.Async.WrappedAsyncResultBase`1.End() +49
System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) +28
System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) +9
System.Web.CallHandlerExecutionStep.OnAsyncHandlerCompletion(IAsyncResult ar) +137
<authentication mode="Windows" />
<authorization>
<deny users="?" />
</authorization>
HttpClientHandler handler = new HttpClientHandler()
{
UseDefaultCredentials = true
};
HttpClient client = new HttpClient(handler);
var result = await client.GetAsync(uri);
result.EnsureSuccessStatusCode();
if (!result.IsSuccessStatusCode)
{
string msg = result.Content.ReadAsStringAsync().Result;
throw new Exception(msg);
}
result.EnsureSuccessStatusCode();