次の方法で共有


XmlUrlResolver.Credentials プロパティ

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