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