Поделиться через


CredentialCache.GetCredential Метод

Определение

Возвращает экземпляр NetworkCredential, связанный с указанным URI или узлом, а также с типом проверки подлинности.

Перегрузки

GetCredential(Uri, String)

Возвращает экземпляр NetworkCredential, связанный с указанным URI или узлом, а также с типом проверки подлинности.

GetCredential(String, Int32, String)

Возвращает экземпляр NetworkCredential, связанный с заданными узлом, портом и протоколом проверки подлинности.

GetCredential(Uri, String)

Исходный код:
CredentialCache.cs
Исходный код:
CredentialCache.cs
Исходный код:
CredentialCache.cs

Возвращает экземпляр NetworkCredential, связанный с указанным URI или узлом, а также с типом проверки подлинности.

public:
 virtual System::Net::NetworkCredential ^ GetCredential(Uri ^ uriPrefix, System::String ^ authType);
public System.Net.NetworkCredential GetCredential (Uri uriPrefix, string authType);
public System.Net.NetworkCredential? GetCredential (Uri uriPrefix, string authType);
abstract member GetCredential : Uri * string -> System.Net.NetworkCredential
override this.GetCredential : Uri * string -> System.Net.NetworkCredential
Public Function GetCredential (uriPrefix As Uri, authType As String) As NetworkCredential

Параметры

uriPrefix
Uri

Параметр Uri, определяющий префикс URI ресурсов, к которым предоставляется доступ посредством учетных данных.

authType
String

Схема проверки подлинности, которая используется ресурсом, названным в uriPrefix.

Возвращаемое значение

Экземпляр NetworkCredential или, если в кэше нет соответствующих учетных данных, — null.

Реализации

Исключения

Параметр uriPrefix или authType имеет значение null.

Примеры

В следующем примере кода метод используется для GetCredential(Uri, String) возврата экземпляра, связанного NetworkCredential с указанным URI и типом проверки подлинности.

void Display( NetworkCredential^ credential )
{
   Console::WriteLine( "\nThe credentials are:" );
   Console::WriteLine( "\nUsername : {0} , Password : {1} , Domain : {2}", credential->UserName, credential->Password, credential->Domain );
}

void GetPage( String^ url, String^ userName, String^ password, String^ domainName )
{
   try
   {
      CredentialCache^ myCredentialCache = gcnew CredentialCache;

      // Dummy names used as credentials.
      myCredentialCache->Add( gcnew Uri( "http://microsoft.com/" ), "Basic", gcnew NetworkCredential( "user1","passwd1","domain1" ) );
      myCredentialCache->Add( gcnew Uri( "http://msdn.com/" ), "Basic", gcnew NetworkCredential( "user2","passwd2","domain2" ) );
      myCredentialCache->Add( gcnew Uri( url ), "Basic", gcnew NetworkCredential( userName,password,domainName ) );

      // Create a webrequest with the specified url.
      WebRequest^ myWebRequest = WebRequest::Create( url );

      // Call 'GetCredential' to obtain the credentials specific to our Uri.
      NetworkCredential^ myCredential = myCredentialCache->GetCredential( gcnew Uri( url ), "Basic" );
      Display( myCredential );

      // Associating only our credentials.
      myWebRequest->Credentials = myCredential;

      // Sends the request and waits for response.
      WebResponse^ myWebResponse = myWebRequest->GetResponse();

      // Process response here.
      Console::WriteLine( "\nResponse Received." );
      myWebResponse->Close();
   }
   catch ( WebException^ e ) 
   {
      if ( e->Response != nullptr )
            Console::WriteLine( "\r\nFailed to obtain a response. The following error occurred : {0}", (dynamic_cast<HttpWebResponse^>(e->Response))->StatusDescription );
      else
            Console::WriteLine( "\r\nFailed to obtain a response. The following error occurred : {0}", e->Status );
   }
   catch ( Exception^ e ) 
   {
      Console::WriteLine( "\nThe following exception was raised : {0}", e->Message );
   }
}
  public static void GetPage(string url,string userName,string password,string domainName)
  {
      try
      {
          CredentialCache myCredentialCache = new CredentialCache();
          // Dummy names used as credentials.
          myCredentialCache.Add(new Uri("http://microsoft.com/"),"Basic", new NetworkCredential("user1","passwd1","domain1"));
          myCredentialCache.Add(new Uri("http://msdn.com/"),"Basic", new NetworkCredential("user2","passwd2","domain2"));
          myCredentialCache.Add(new Uri(url),"Basic", new NetworkCredential(userName,password,domainName));
          // Create a webrequest with the specified url.
       WebRequest myWebRequest = WebRequest.Create(url);
          // Call 'GetCredential' to obtain the credentials specific to our Uri.
          NetworkCredential myCredential = myCredentialCache.GetCredential(new Uri(url),"Basic");
          Display(myCredential);
       // Associating only our credentials.
          myWebRequest.Credentials = myCredential;
          // Sends the request and waits for response.
       WebResponse myWebResponse = myWebRequest.GetResponse();

          // Process response here.

       Console.WriteLine("\nResponse Received.");
          myWebResponse.Close();
      }
      catch(WebException e)
      {
          if (e.Response != null)
              Console.WriteLine("\r\nFailed to obtain a response. The following error occurred : {0}",((HttpWebResponse)(e.Response)).StatusDescription);
          else
              Console.WriteLine("\r\nFailed to obtain a response. The following error occurred : {0}",e.Status);
      }
      catch(Exception e)
      {
          Console.WriteLine("\nThe following exception was raised : {0}",e.Message);
      }
}
public static void Display(NetworkCredential credential)
{
  Console.WriteLine("\nThe credentials are:");
  Console.WriteLine("\nUsername : {0} ,Password : {1} ,Domain : {2}",credential.UserName,credential.Password,credential.Domain);
}
Public Shared Sub GetPage(url As String, userName As String, password As String, domainName As String)
    Try
        Dim myCredentialCache As New CredentialCache()
        ' Dummy names used as credentials    
        myCredentialCache.Add(New Uri("http://microsoft.com/"), "Basic", New NetworkCredential("user1", "passwd1", "domain1"))
        myCredentialCache.Add(New Uri("http://msdn.com/"), "Basic", New NetworkCredential("user2", "passwd2", "domain2"))
        myCredentialCache.Add(New Uri(url), "Basic", New NetworkCredential(userName, password, domainName))
        ' Creates a webrequest with the specified url. 
        Dim myWebRequest As WebRequest = WebRequest.Create(url)
        ' Call 'GetCredential' to obtain the credentials specific to our Uri.
        Dim myCredential As NetworkCredential = myCredentialCache.GetCredential(New Uri(url), "Basic")
        Display(myCredential)
        myWebRequest.Credentials = myCredential 'Associating only our credentials            
        ' Sends the request and waits for response.
        Dim myWebResponse As WebResponse = myWebRequest.GetResponse()
        ' Process response here.
        Console.WriteLine(ControlChars.Cr + "Response Received.")
        myWebResponse.Close()

    Catch e As WebException
        If Not (e.Response Is Nothing) Then
            Console.WriteLine(ControlChars.Lf + ControlChars.Cr + "Failed to obtain a response. The following error occurred : {0}", CType(e.Response, HttpWebResponse).StatusDescription)
        Else
            Console.WriteLine(ControlChars.Lf + ControlChars.Cr + "Failed to obtain a response. The following error occurred : {0}", e.Status)
        End If
    Catch e As Exception
        Console.WriteLine(ControlChars.Cr + "The following exception was raised : {0}", e.Message)
    End Try
End Sub

Public Shared Sub Display(ByVal credential As NetworkCredential)
    Console.WriteLine("The credentials are: ")
    Console.WriteLine(ControlChars.Cr + "Username : {0} ,Password : {1} ,Domain : {2}", credential.UserName, credential.Password, credential.Domain)
End Sub

Комментарии

Метод GetCredential(Uri, String) выполняет поиск CredentialCache и возвращает NetworkCredential экземпляр для указанного URI и типа авторизации. Если не CredentialCache содержит соответствующего экземпляра NetworkCredential , null возвращается .

GetCredential использует самый длинный префикс URI в кэше, чтобы определить, какой набор учетных данных возвращается для типа авторизации. В следующей таблице приведены примеры.

Префикс URI Соответствует
http://www.contoso.com/portal/news.htm Запросы для конкретной веб-страницы news.htm.
http://www.contoso.com/portal/ Запрашивает все содержимое portal в пути, кроме страницы news.htm.
http://www.contoso.com/ Запрашивает все ресурсы по адресу www.contoso.com, за исключением ресурсов в portal пути.

Применяется к

GetCredential(String, Int32, String)

Исходный код:
CredentialCache.cs
Исходный код:
CredentialCache.cs
Исходный код:
CredentialCache.cs

Возвращает экземпляр NetworkCredential, связанный с заданными узлом, портом и протоколом проверки подлинности.

public:
 virtual System::Net::NetworkCredential ^ GetCredential(System::String ^ host, int port, System::String ^ authenticationType);
public System.Net.NetworkCredential GetCredential (string host, int port, string authenticationType);
public System.Net.NetworkCredential? GetCredential (string host, int port, string authenticationType);
abstract member GetCredential : string * int * string -> System.Net.NetworkCredential
override this.GetCredential : string * int * string -> System.Net.NetworkCredential
Public Function GetCredential (host As String, port As Integer, authenticationType As String) As NetworkCredential

Параметры

host
String

Объект String, определяющий компьютер.

port
Int32

Значение Int32, которое обозначает порт, через который следует подключаться к host.

authenticationType
String

Строка String, указывающая схему проверку подлинности, используемую при подключении к host.

Возвращаемое значение

Экземпляр NetworkCredential или, если в кэше нет соответствующих учетных данных, — null.

Реализации

Исключения

host имеет значение null.

-или-

authType имеет значение null.

authType не является приемлемым значением.

-или-

Параметр host равен пустой строке ("").

Значение параметра port меньше нуля.

Комментарии

Этот метод выполняет поиск CredentialCache и возвращает NetworkCredential экземпляр для указанного узла, порта и типа авторизации. Значения host, и authType , передаваемые в этот метод, не учитывают регистр по сравнению со значениями, portуказанными при добавлении учетных данных в CredentialCache с помощью Add методов .

Поддерживаемые значения для authType : "NTLM", "Digest", "Kerberos" и "Negotiate".

Применяется к