我正在尝试Microsoft在此发布的一个Azure Active Directory示例:https://github.com/AzureADSamples/WebApp-WebAPI-OpenIDConnect-DotNet
我设法搞砸了TodoListService的web.config中的观众价值,并在调用该服务时获得了401 Unauthorized响应。
问题是,我花了太长时间才弄清楚出了什么问题。在调试器中运行它并没有在输出窗口中生成任何有用的跟踪语句。事件查看器中也没有事件。
我可以打开哪些配置可以帮助我更快地找到它?是否存在具有日志记录或诊断功能的中间件,我可以用它来调试它?
我想我可以从GitHub抓取来源并尝试调试问题,但这并不方便。有什么我想念的吗?
答案 0 :(得分:4)
在ADAL v3中,您创建了一个实现IAdalLogCallback的类:
public class AdalLoggerCallback : IAdalLogCallback
{
public void Log(LogLevel level, string message)
{
Console.Write(message);
}
}
然后,设置静态LoggerCallbackHandler对象的Callback属性:
LoggerCallbackHandler.Callback = new AdalLoggerCallback();
答案 1 :(得分:3)
您可以使用
启用记录器 Trace.Listeners.Add(new ConsoleTraceListener());
AdalTrace.LegacyTraceSwitch.Level = TraceLevel.Verbose;
富尔详细信息https://github.com/AzureAD/azure-activedirectory-library-for-dotnet#logs
答案 2 :(得分:3)
虽然接受的答案确实打开了ADAL(客户端库)的跟踪,但我遇到了一个问题,我需要为OWIN身份验证中间件启用跟踪。
我的代码只是在插入此中间件时获得了我的服务授权:
public void Configuration(IAppBuilder app)
{
app.UseWindowsAzureActiveDirectoryBearerAuthentication(
new WindowsAzureActiveDirectoryBearerAuthenticationOptions
{
Audience = ConfigurationManager.AppSettings["Audience"],
Tenant = ConfigurationManager.AppSettings["Tenant"]
}
}
打开日志记录可以通过将以下部分添加到项目的web.config中来完成:
<configuration>
<system.diagnostics>
<switches>
<add name="Microsoft.Owin" value="Verbose" />
</switches>
</system.diagnostics>
</configuration>
默认情况下,输出将显示在调试控制台窗口中,但您可以通过添加跟踪侦听器来更改此输出。我发现了一篇内容非常丰富的文章here。
事实证明,我忘了关闭多租户服务的发卡行验证。