Compartilhar via


CA1057: String URI sobrecargas chamar System. URI sobrecargas

TypeName

StringUriOverloadsCallSystemUriOverloads

CheckId

CA1057

<strong>Categoria</strong>

Microsoft.design

Alteração significativa

Não-separável

Causa

Um tipo declara sobrecargas do método só diferem a substituição de um parâmetro de seqüência de caracteres com um System.Uri parâmetro e a sobrecarga que aceita o parâmetro de seqüência de caracteres não chama a sobrecarga que utiliza o Uri parâmetro.

Descrição da regra

Como as sobrecargas de diferem apenas pela seqüência de caracteres /Uri a seqüência de caracteres do parâmetro, será adotada para representar um identificador de recursos uniforme (URI).Uma representação de seqüência de caracteres de um URI está sujeita a análise e erros de codificação e pode levar a vulnerabilidades de segurança.O Uri classe fornece esses serviços de maneira segura e protegida.Para obter os benefícios da 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 de seqüência 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 o objeto para a sobrecarga que tem o Uri parâmetro.

Quando suprimir avisos

É seguro eliminar um aviso esta regra se o parâmetro de seqüência 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

CA2234: Objetos System. URI de passagem em vez de seqüências de caracteres

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

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

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