Udostępnij za pośrednictwem


CA1057: Przeciążenia identyfikatora URI, który jest ciągiem, wywołują przeciążenia System.Uri

TypeName

StringUriOverloadsCallSystemUriOverloads

CheckId

CA1057

Kategoria

Microsoft.Design

Złamanie zmiany

Bez podziału

Przyczyna

Typ deklaruje overloads metody, które różnią się jedynie przez zastąpienie parametru ciąg znaków z Uri parametr i przeciążenie, która przyjmuje parametr ciągu nie wywoływać przeciążenia, który ma Uri parametru.

Opis reguły

Ponieważ overloads różnią się tylko ciąg /Uri parametr, ciąg zakłada do reprezentowania jednolitym identyfikatorem zasobów (URI).Reprezentację ciągu identyfikatora URI jest podatna na analizowanie i błędów kodowania i może prowadzić do luk w zabezpieczeniach.Uri Klasy świadczy te usługi w bezpieczny sposób.Do czerpania korzyści z Uri klasy, należy wywoływać przeciążenia ciąg Uri przy użyciu argumentu ciąg na przeciążenie.

Jak naprawić naruszenia

Metodę, która wykorzystuje reprezentację ciągu identyfikatora URI, tak, aby go tworzy instancję CMC Uri klasy przy użyciu argumentu ciąg znaków, a następnie przekazuje Uri obiektu do przeciążenia, który ma Uri parametru.

Kiedy do pomijania ostrzeżenia

Bezpiecznie pominąć ostrzeżenie od tej reguły, jeśli parametr ciągu nie reprezentuje identyfikatora URI.

Przykład

Poniższy przykład pokazuje przeciążenie ciąg prawidłowo wdrożone.

Imports System

Namespace DesignLibrary

   Public Class History

      Sub AddToHistory(uriString As String)
          Dim newUri As New Uri(uriString)
          AddToHistory(newUri)
      End Sub 

      Sub AddToHistory(uriType As Uri)
      End Sub 

   End Class 

End Namespace
using System;

namespace DesignLibrary
{
   public class History
   {
      public void AddToHistory(string uriString)
      {
          Uri newUri = new Uri(uriString);
          AddToHistory(newUri);
      }

      public void AddToHistory(Uri uriType) { }
   }
}
#using <system.dll>
using namespace System;

namespace DesignLibrary
{
   public ref class History
   {
   public:
      void AddToHistory(String^ uriString)
      {
          Uri^ newUri = gcnew Uri(uriString);
          AddToHistory(newUri);
      }

      void AddToHistory(Uri^ uriType) { }
   };
}

Zasady pokrewne

CA2234: Przekaż obiekty System.Uri zamiast ciągów

CA1056: Właściwości identyfikatora URI nie powinny być ciągami

CA1054: Parametry identyfikatora URI nie powinny być ciągami

CA1055: Wartości zwracane identyfikatora URI nie powinny być ciągami