Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure 在公司代理网络内的WebAPI中运行时ADAL[AquireTokenAsync]超时_Azure_Asp.net Web Api_Azure Active Directory - Fatal编程技术网

Azure 在公司代理网络内的WebAPI中运行时ADAL[AquireTokenAsync]超时

Azure 在公司代理网络内的WebAPI中运行时ADAL[AquireTokenAsync]超时,azure,asp.net-web-api,azure-active-directory,Azure,Asp.net Web Api,Azure Active Directory,我们在asp.net web api应用程序中遇到了Azure广告库的一个非常奇怪的问题。当我们尝试使用带有证书的AcquireTokenAsync获取令牌时,没有响应,然后超时 奇怪的部分: 如果我们在控制台应用程序中复制相同的代码,控制台应用程序就会工作,立即获取令牌 如果我们使用fiddler启动一个超过我们公司默认代理的代理,webapi应用程序就会工作 我们使用的测试代码完全来自文档 我们使用的示例代码: public async Task < string > GetTo

我们在asp.net web api应用程序中遇到了Azure广告库的一个非常奇怪的问题。当我们尝试使用带有证书的AcquireTokenAsync获取令牌时,没有响应,然后超时

奇怪的部分:

如果我们在控制台应用程序中复制相同的代码,控制台应用程序就会工作,立即获取令牌

如果我们使用fiddler启动一个超过我们公司默认代理的代理,webapi应用程序就会工作

我们使用的测试代码完全来自文档

我们使用的示例代码:

public async Task < string > GetTokenAsync() {

    var context = new AuthenticationContext(authority);

    var store = new X509Store(StoreName.My, StoreLocation.LocalMachine);

    store.Open(OpenFlags.ReadOnly);

    var results = store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false);

    var cert = new ClientAssertionCertificate(clientid, results[0]);

    var token = await context.AcquireTokenAsync(resource, cert).AccessToken;

    return token;

}
公共异步任务
GetTokenAsync(){
var context=新的AuthenticationContext(authority);
var store=new X509Store(StoreName.My,StoreLocation.LocalMachine);
打开(OpenFlags.ReadOnly);
var results=store.Certificates.Find(X509FindType.FindByThumbprint,指纹,false);
var cert=新客户证书(客户ID,结果[0]);
var token=await context.AcquireTokenAsync(资源,证书).AccessToken;
返回令牌;
}
基本上,代码应该正常工作,因为它直接来自文档。这与网络有关吗

简而言之,我们得到的错误是:

位于System.Web.Http.Results.ExceptionResult..ctor(异常异常,IDependencyProvider依赖项) 位于System.Web.Http.ApicController.InternalServerError(异常) 在C:\Users\QiaoH\source\repos\WebApplication1\WebApplication1\Controllers\TokenController.cs中的WebApplication1.Controllers.TokenController.d\uu 0.MoveNext()处:第55行--从引发异常的上一个位置开始的堆栈结束跟踪 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 在System.Threading.Tasks.TaskHelperExtensions.d_u1`1.MoveNext()中 来自引发异常的上一个位置的堆栈结束跟踪 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 位于System.Web.Http.Controllers.ApiControllerActionInvoker.d_u1.MoveNext()---引发异常的上一个位置的堆栈结束跟踪 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 在System.Web.Http.Controllers.ActionFilterResult.d_u5.MoveNext()中 来自引发异常的上一个位置的堆栈结束跟踪 at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) 在System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 在System.Web.Http.Dispatcher.HttpControllerDispatcher.d_u15.MoveNext()中

解决的问题:

由于代理,我们必须使用默认凭据启用默认代理

我们将下面的内容放在web.config中,它可以正常工作

    <system.net>
        <defaultProxy enabled="true" useDefaultCredentials="true">
        </defaultProxy>
    </system.net>

问题已解决:

由于代理,我们必须使用默认凭据启用默认代理

我们将下面的内容放在web.config中,它可以正常工作

    <system.net>
        <defaultProxy enabled="true" useDefaultCredentials="true">
        </defaultProxy>
    </system.net>