C# HttpWebRequest中的ICredentials

C# HttpWebRequest中的ICredentials,c#,httpwebrequest,credentials,C#,Httpwebrequest,Credentials,我试图发出一个web请求,并注意到它需要基于ICredentials接口的凭据 HttpWebRequest request = (HttpWebRequest)WebRequest.Create(UrlID); request.Method = WebRequestMethods.Http.Get; request.ContentType = "text/json"; request.Credentials = this.Credentials; 我已经在我的配置类中实现了该接口,所以我可以

我试图发出一个web请求,并注意到它需要基于
ICredentials
接口的凭据

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(UrlID);
request.Method = WebRequestMethods.Http.Get;
request.ContentType = "text/json";
request.Credentials = this.Credentials;
我已经在我的配置类中实现了该接口,所以我可以跳过在类之间传递用户名和密码

public NetworkCredential GetCredential(Uri uri, string authType)
{
    return new NetworkCredential(Login, _Password);
}
但是,它无法进行身份验证。我找到了另一种使用
CredentialCache
的方法,该方法有效(请注意,传递的是相同的
NetworkCredential
):

问题是,即使它们都继承自
ICredentials
,它们的行为为何会有所不同?
HttpWebRequest
不应该只访问
GetCredential
方法,该方法应该返回相同的
NetworkCredential
对象吗


感谢您的澄清。

我还不能自己测试它,但我认识到,在GetCredential函数中,您正在传递两个您在任何地方都不使用的参数。确实不必将它们进一步传递给构造函数?@rekcul
NetworkCredential
没有属性
Uri
,也没有将
Uri
作为参数的构造函数。
CredentialCache cc = new CredentialCache();
cc.Add(
    UrlID,
    "Basic",
    this.Credentials.GetCredential(UrlID, "Basic"));
request.Credentials = cc;