在Petrel插件中使用DefaultCredentials

时间:2016-11-15 21:52:31

标签: c# .net ocean petrel

我正在使用Petrel插件,该插件向需要Windows身份验证的IIS服务器发出Web请求。为了发送当前登录用户的Windows凭据,我设置了request.UseDefaultCredentials = true。以下是提出请求的代码。

public static void MakeWebRequest()
{
    var request = (HttpWebRequest)WebRequest.Create("some web address");
    request.ContentType = "application/json; charset=utf-8";
    request.Method = "POST";
    request.UseDefaultCredentials = true;
    using (var streamWriter = new StreamWriter(request.GetRequestStream()))
    {
        streamWriter.Write("some request data");
    }

    var response = request.GetResponse();

    using (var streamReader = new StreamReader(response.GetResponseStream()))
    {
        var responseText = streamReader.ReadToEnd();
    }
}

从简单的控制台应用程序运行此代码时,已登录用户的Windows凭据已成功添加到Web请求中,并返回响应。

但是,在Petrel插件中运行相同的代码时,不会添加凭据。这导致IIS拒绝401 Unauthorized错误请求。

为什么这段代码不能在插件中运行?有没有办法将当前用户的Windows凭据附加到Web请求?我不想在插件中提示用户提供凭据。

1 个答案:

答案 0 :(得分:-1)

我不知道为什么,但显然Petrel会过滤掉你的凭据。但是,我认为你可以获得凭据。 Google for HttpWebRequest CreateCredentials。