我正在开发一个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未授权错误。
为什么这段代码不能在插件中运行?有没有办法将当前用户的Windows凭据附加到web请求?我不想在插件中提示用户输入凭据。
发布于 2016-11-16 22:53:34
我不知道为什么,但很明显Petrel过滤掉了你的证书。不过,我认为你可以拿到证书。谷歌搜索HttpWebRequest CreateCredentials。
https://stackoverflow.com/questions/40620366
复制相似问题