Flurl 智能地为每个域重用 HttpClientHandler,因此您不想在每次运行时都设置 UseDefaultCredentials。相反,您可以修改 HttpClientFactory 以返回一个配置为 UseDefaultCredentials 的。
public class UseDefaultCredentialsClientFactory : DefaultHttpClientFactory
{
public override HttpMessageHandler CreateMessageHandler()
{
return new HttpClientHandler { UseDefaultCredentials = true };
}
}
然后,您需要告诉 Flurl 将此工厂用于您要使用 Windows 身份验证的域。
public static class FlurlConfiguration
{
public static void ConfigureDomainForDefaultCredentials(string url)
{
FlurlHttp.ConfigureClient(url, cli =>
cli.Settings.HttpClientFactory = new UseDefaultCredentialsClientFactory());
}
}
然后,您只需在每个域的启动时调用一次。对于 ASP.NET,全局应用程序类中的 Application_Start 方法是一个好地方。
FlurlConfiguration.ConfigureDomainForDefaultCredentials("https://example.com");
FlurlConfiguration.ConfigureDomainForDefaultCredentials("http://services.example.com");
感谢 Todd Menier向我解释了这一点。