CA1055: URI return values should not be strings
|
TypeName |
UriReturnValuesShouldNotBeStrings |
|
CheckId |
CA1055 |
|
Category |
Microsoft.Design |
|
Breaking Change |
Breaking |
This rule splits the method name into tokens based on the Pascal casing convention and checks whether each token equals "uri", "Uri", "urn", "Urn", "url", or "Url". If there is a match, the rule assumes that the method returns a uniform resource identifier (URI). A string representation of a URI is prone to parsing and encoding errors, and can lead to security vulnerabilities. The System.Uri class provides these services in a safe and secure manner.
To fix a violation of this rule, change the return type to a Uri.
The following example shows a type, ErrorProne, that violates this rule, and a type, SaferWay, that satisfies the rule.
using System; namespace DesignLibrary { public class ErrorProne { string someUri; // Violates rule UriPropertiesShouldNotBeStrings. public string SomeUri { get { return someUri; } set { someUri = value; } } // Violates rule UriParametersShouldNotBeStrings. public void AddToHistory(string uriString) { } // Violates rule UriReturnValuesShouldNotBeStrings. public string GetRefererUri(string httpHeader) { return "http://www.adventure-works.com"; } } public class SaferWay { Uri someUri; // To retrieve a string, call SomeUri.ToString(). // To set using a string, call SomeUri = new Uri(string). public Uri SomeUri { get { return someUri; } set { someUri = value; } } public void AddToHistory(string uriString) { // Check for UriFormatException. AddToHistory(new Uri(uriString)); } public void AddToHistory(Uri uriType) { } public Uri GetRefererUri(string httpHeader) { return new Uri("http://www.adventure-works.com"); } } }