C# 在Petrel插件中使用DefaultCredentials

C# 在Petrel插件中使用DefaultCredentials,c#,.net,ocean,petrel,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

我正在开发一个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请求?我不想在插件中提示用户获取凭据。

我不知道为什么,但显然Petrel会过滤掉你的凭据。不过,我想你可以拿到证书。谷歌的HttpWebRequestCreateCredentials

我不知道为什么,但显然海燕会过滤掉你的证件。不过,我想你可以拿到证书。谷歌的HttpWebRequestCreateCredentials

您是否尝试通过请求设置凭据。凭据=CredentialCache.DefaultCredentials;是的,我已尝试请求。凭据=CredentialCache.DefaultCredentials;和request.Credentials=CredentialCache.DefaultNetworkCredentials;。通过进一步的实验,我发现当在主模块类(从IModule派生的类)中调用web请求时,它可以工作。该模块设置LoaderFactory。在LoaderFactory中或在任何级别进行web请求都会导致请求失败。我不确定DefaultCredentials怎么会消失。你能检查一下credentials对象看看里面有没有什么东西吗?或者它设置为null?它不是null。您是否尝试通过请求设置凭据。凭据=CredentialCache.DefaultCredentials;是的,我已尝试请求。凭据=CredentialCache.DefaultCredentials;和request.Credentials=CredentialCache.DefaultNetworkCredentials;。通过进一步的实验,我发现当在主模块类(从IModule派生的类)中调用web请求时,它可以工作。该模块设置LoaderFactory。在LoaderFactory中或在任何级别进行web请求都会导致请求失败。我不确定DefaultCredentials怎么会消失。你能检查一下credentials对象看看里面有没有什么东西吗?或者设置为null?它不是null。