我正在使用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请求?我不想在插件中提示用户提供凭据。
答案 0 :(得分:-1)
我不知道为什么,但显然Petrel会过滤掉你的凭据。但是,我认为你可以获得凭据。 Google for HttpWebRequest CreateCredentials。