Web 要求を認証するために使用する資格情報を設定します。
Property Credentials As ICredentials
[C#]
ICredentials Credentials {set;}
[C++]
public: __property void set_Credentials(ICredentials*);
[JScript]
public override function set Credentials(ICredentials);
プロパティ値
ICredentials オブジェクト。このプロパティが設定されていない場合、既定値は null 参照 (Visual Basic では Nothing) です。つまり、 XmlUrlResolver はユーザーの資格情報を持ちません。
解説
仮想ディレクトリが認証を要求しない場合は、このプロパティを設定する必要はありません。それ以外の場合は、ユーザーの資格情報を提供する必要があります。
仮想ディレクトリ "https://localhost/bookstore/inventory.xml" の資格情報を設定する C# コードを次に示します。
XmlTextReader reader = new XmlTextReader("https://localhost/bookstore/inventory.xml");
NetworkCredential nc = new NetWorkCredential (UserName,SecurelyStoredPassword,Domain");
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = nc;
reader.XmlResolver= resolver;
別の資格情報を異なる URI に関連付け、資格情報キャッシュに追加できます。その後、この資格情報を使用して、XML の元のソースに関係なく、異なる URI の認証を確認できます。
NetworkCredential myCred = new NetworkCredential(UserName,SecurelyStoredPassword,Domain);
CredentialCache myCache = new CredentialCache();
myCache.Add(new Uri("https://www.contoso.com/"), "Basic", myCred);
myCache.Add(new Uri("http://app.contoso.com/"), "Basic", myCred);
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = myCache;
reader.XmlResolver = resolver;
使用例
[Visual Basic, C#, C++] ネットワーク サーバーに格納された外部 DTD ファイルの参照を含むローカル XML ファイルを解析する例を次に示します。 XmlUrlResolver を使用して、DTD ファイルのアクセスに必要な資格情報を指定します。
' Create the reader.
Dim txtreader as XmlTextReader = new XmlTextReader("book5.xml")
Dim reader as XmlValidatingReader = new XmlValidatingReader(txtreader)
txtreader.WhitespaceHandling = WhitespaceHandling.None
' Set the credentials necessary to access the DTD file stored on the network.
Dim resolver as XmlUrlResolver = new XmlUrlResolver()
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials
reader.XmlResolver = resolver
' Display each of the element nodes.
while (reader.Read())
select case reader.NodeType
case XmlNodeType.Element:
Console.Write("<{0}>", reader.Name)
case XmlNodeType.Text:
Console.Write(reader.Value)
case XmlNodeType.DocumentType:
Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value)
case XmlNodeType.EntityReference:
Console.Write(reader.Name)
case XmlNodeType.EndElement:
Console.Write("</{0}>", reader.Name)
end select
end while
[C#]
// Create the reader.
XmlTextReader txtreader = new XmlTextReader("book5.xml");
XmlValidatingReader reader = new XmlValidatingReader(txtreader);
txtreader.WhitespaceHandling = WhitespaceHandling.None;
// Set the credentials necessary to access the DTD file stored on the network.
XmlUrlResolver resolver = new XmlUrlResolver();
resolver.Credentials = System.Net.CredentialCache.DefaultCredentials;
reader.XmlResolver = resolver;
// Display each of the element nodes.
while (reader.Read()){
switch (reader.NodeType){
case XmlNodeType.Element:
Console.Write("<{0}>", reader.Name);
break;
case XmlNodeType.Text:
Console.Write(reader.Value);
break;
case XmlNodeType.DocumentType:
Console.Write("<!DOCTYPE {0} [{1}]", reader.Name, reader.Value);
break;
case XmlNodeType.EntityReference:
Console.Write(reader.Name);
break;
case XmlNodeType.EndElement:
Console.Write("</{0}>", reader.Name);
break;
}
}
[C++]
// Create the reader. ->
XmlTextReader* txtreader = new XmlTextReader(S"book5.xml");
XmlValidatingReader* reader = new XmlValidatingReader(txtreader);
txtreader -> WhitespaceHandling = WhitespaceHandling::None;
// Set the credentials necessary to access the DTD file stored on the network.
XmlUrlResolver* resolver = new XmlUrlResolver();
resolver -> Credentials = System::Net::CredentialCache::DefaultCredentials;
reader -> XmlResolver = resolver;
// Display each of the element nodes.
while (reader -> Read())
{
switch (reader -> NodeType)
{
case XmlNodeType::Element:
Console::Write(S"< {0}>", reader->Name);
break;
case XmlNodeType::Text:
Console::Write(reader->Value);
break;
case XmlNodeType::DocumentType:
Console::Write(S"<!DOCTYPE {0} [ {1}]", reader->Name, reader->Value);
break;
case XmlNodeType::EntityReference:
Console::Write(reader->Name);
break;
case XmlNodeType::EndElement:
Console::Write(S"</ {0}>", reader->Name);
break;
}
}
[Visual Basic, C#, C++] この例では、次のデータ ファイルを入力として使用しています。
[Visual Basic, C#, C++] book5.xml
<!DOCTYPE book SYSTEM 'http://myServer/DTDs/books.dtd'>
<book ISBN = '1-861001-57-5'>
<title>Pride And Prejudice</title>
<price>19.95</price>
<misc>&h;</misc>
</book>
books.dtd
<!ELEMENT book (title,price,misc)>
<!ATTLIST book
genre CDATA "novel"
ISBN CDATA #REQUIRED>
<!ELEMENT title (#PCDATA)>
<!ELEMENT price (#PCDATA)>
<!ELEMENT misc (#PCDATA)>
<!ENTITY h "hardcover">
<!ENTITY p "paperback">
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET
参照
XmlUrlResolver クラス | XmlUrlResolver メンバ | System.Xml 名前空間 | CredentialCache | NetworkCredential