如何在C#中读取安全的XML URI?

时间:2012-01-31 14:28:00

标签: c# xml https

我正在尝试从C#中的URI读取安全的XML文档。我理解XmlReader类的基础知识。但是我无法弄清楚如何在代码中为URI提供用户名和密码。我觉得它与XmlSecureResolver对象有关。但我无法弄清楚如何设置用户名和密码。任何人都可以帮我解决如何设置凭据吗?

谢谢, 科里

2 个答案:

答案 0 :(得分:6)

我认为这应该可以解决问题:

WebRequest request = WebRequest.Create(url);
request.Credentials = new NetworkCredential("usernamne", "password");

using (WebResponse response = request.GetResponse()) 
{
    using (XmlReader reader = XmlReader.Create(response.GetResponseStream()))
    {
        // Blah blah...
    }
}

答案 1 :(得分:1)

“XmlReader Authenticate”一词的快速Google将此作为第一个结果:

http://msdn.microsoft.com/en-us/library/47as68k4%28v=vs.71%29.aspx

  

在解析包含要读取的XML数据的文件的URL时,该文件可能具有受限制的访问策略。如果需要身份验证才能访问网络资源,请使用XmlResolver.Credentials属性指定必要的凭据。如果未设置XmlResolver.Credentials属性,则将凭据设置为null。

XmlTextReader rdr = new XmlTextReader("http://localhost/bookstore/books.xml");
rdr.XmlResolver.Credentials = CredentialCache.DefaultCredentials;
XmlDocument doc = new XmlDocument();
doc.Load(rdr)

并使用不同的凭据:

NetworkCredential myCred = new NetworkCredential(UserName, SecurelyStoredPassword, domain); 
CredentialCache myCache = new CredentialCache(); 
myCache.Add(new Uri("www.contoso.com"), "Basic", myCred); 
myCache.Add(new Uri("app.contoso.com"), "Basic", myCred);
reader.XmlResolver.Credentials = myCache;