有没有更好的方法来验证C#字符串是否是有效的xs:anyURI而不是以下内容?
public bool VerifyAnyURI(string anyUriValue)
{
bool result = false;
try
{
SoapAnyUri anyUri = new SoapAnyUri(anyUriValue);
result = true;
}
catch (Exception)
{
}
return result;
}
这个构造函数似乎没有抛出任何异常。从技术上讲,任何有效的字符串都是有效的anyURI吗?
答案 0 :(得分:7)
使用Reflector查看SoapAnyUri
构造函数,它根本不执行任何验证。
anyURI
数据类型is defined as follows:
[定义:] anyURI表示统一资源标识符引用(URI)。 anyURI值可以是绝对值或相对值,并且可以具有可选的片段标识符(即,它可以是URI参考)。此类型应用于指定值满足[RFC 2396]定义的URI角色的意图,并由[RFC 2732]修改。
因此,您只需使用 Uri.TryCreate
和UriKind.RelativeOrAbsolute
来验证字符串是否代表有效值:
Uri uri;
bool valid = Uri.TryCreate(anyUriValue, UriKind.RelativeOrAbsolute, out uri);