String URI sobrecargas telefonar sistema.URI sobrecargas

TypeName

StringUriOverloadsCallSystemUriOverloads

CheckId

CA1057

Category (Categoria)

Microsoft.Design

Quebrando alterar

Não separável

Causa

Um tipo declara método métodos sobrecarregados que diferem somente pela substituição de um parâmetro de cadeia de caracteres com um System.Uri parâmetro e a sobrecarga que aceita o parâmetro de cadeia de caracteres não telefonar a sobrecarga que aceita o Uri parâmetro.

Descrição da regra

Como as sobrecargas de diferem apenas pela seqüência de caracteres / Uri presume-se parâmetro, a seqüência de caracteres que representam um identificador de recurso uniforme (URI). Uma representação de seqüência de caracteres de um URI está sujeita a análise e a codificação de erros e pode levar a vulnerabilidades de segurança.The Uri classe fornece esses serviços de maneira segura e protegida. Para obter os benefícios do Uri classe, a sobrecarga de seqüência de caracteres deve chamar o Uri usando o argumento de seqüência de caracteres de sobrecarga.

Como corrigir violações

Reimplementar o método que usa a representação da cadeia de caracteres do URI para que ele cria uma instância do Uri usando o argumento de seqüência de caracteres de classe e então passa a Uri objeto para a sobrecarga que possui o Uri parâmetro.

Quando suprimir avisos

É seguro eliminar um aviso essa regra se o parâmetro de cadeia de caracteres não representa um URI.

Exemplo

O exemplo a seguir mostra uma sobrecarga de seqüência de caracteres corretamente implementada.

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) { }
   };
}

Regras relacionadas

Passar objetos sistema.URI em vez de seqüências de caracteres

Propriedades URI não devem ser seqüências de caracteres

Parâmetros da URI não devem ser seqüências de caracteres

URI retornar valores não devem ser seqüências de caracteres