'System.Net.Http.HttpRequestException'发生在mscorlib.dll中,但未在用户代码

时间:2016-04-10 05:20:48

标签: c# azure httpclient

我们正在开发Windows窗体应用程序以向Azure AD验证Windows窗体应用程序。

我有几个问题,网上资源似乎都已经过时了。

正如以下链接所示,我创建了一个webapi和本机客户端api和Windows窗体应用程序。

在web api中,我更新了清单文件,如下所示

“oauth2Permissions”:[

{

  "adminConsentDescription": "Allow the application to access ftpwebapi on behalf of the signed-in user.",

  "adminConsentDisplayName": "Access ftpwebapi",

  "id": "4eebeb18-aee6-408a-bea1-c090766dce23",

  "isEnabled": true,

  "origin": "Application",

  "type": "User",

  "userConsentDescription": "Allow the application to access ftpwebapi on your behalf.",

  "userConsentDisplayName": "Access ftpwebapi",

  "value": "user_impersonation"

}

],

在键下添加我添加了2年的条目,并将webapi添加到本机客户端应用程序。

在Windows窗体中,我在按钮单击事件中添加了以下代码。

private async void button1_Click(object sender,EventArgs e)

    {

        string authority = "https://login.windows.net/****";

        string resourceURI = "https://***.com/WebApplication3";

        string clientID = "********-5815-4358-****-*********";

        Uri returnURI = new Uri("http://********.com");

        AuthenticationContext authContext =

            new AuthenticationContext(authority);

        AuthenticationResult authResult =

            authContext.AcquireToken(resourceURI, clientID, returnURI);

        string authHeader = authResult.CreateAuthorizationHeader();

        // don't do this in prod

        System.Net.ServicePointManager.ServerCertificateValidationCallback =

            ((s, c, c2, se) => true);

        HttpClient client = new HttpClient();

        HttpRequestMessage request =

            new HttpRequestMessage(HttpMethod.Get, "https://localhost:***/task/api/");

        request.Headers.TryAddWithoutValidation("Authorization", authHeader);

        var response = await client.SendAsync(request);

        string responseString = await response.Content.ReadAsStringAsync();

        MessageBox.Show(responseString);

}

到目前为止这是正确的方法吗?

我在

中遇到错误

var response = await client.SendAsync(request);

mscorlib.dll中出现'System.Net.Http.HttpRequestException'类型的异常,但未在用户代码中处理

其他信息:发送请求时出错。

1 个答案:

答案 0 :(得分:0)

我在正确设置这些变量后运行你的代码,起初我得到了同样的错误。然后我在httpRequestMessage request =new HttpRequestMessage(HttpMethod.Get, "https://localhost:***/task/api/")中更改了我的请求。

现在它已成功运行,请确保您的网址https://localhost:***/task/api/正确,请在localhost:***中仔细检查您的端口。

请阅读一些教程以从here获取更多信息。