URI无效:无法确定URI的格式
我不断收到这个错误。
URI无效:无法确定URI的格式。
我有的代码是:
Uri uri = new Uri(slct.Text); if (DeleteFileOnServer(uri)) { nn.BalloonTipText = slct.Text + " has been deleted."; nn.ShowBalloonTip(30); }
编辑:slct.Text中的内容是ftp.jt-software.net/style.css
。
是什么赋予了? 这不是一个有效的URI格式? 这是纯文本。
对Uri使用不同的构造函数可能会有帮助。
如果你有服务器名称
string server = "http://www.myserver.com";
并有一个相对的Uripath来追加它,例如
string relativePath = "sites/fileshttp://img.dovov.compicture.png"
当从这两个创build一个Uri我得到“格式无法确定”的exception,除非我使用UriKind参数的构造函数,即
// this works, because the protocol is included in the string Uri serverUri = new Uri(server); // needs UriKind arg, or UriFormatException is thrown Uri relativeUri = new Uri(relativePath, UriKind.Relative); // Uri(Uri, Uri) is the preferred constructor in this case Uri fullUri = new Uri(serverUri, relativeUri);
查看可能的原因: http : //msdn.microsoft.com/en-us/library/z6c2z492(v=VS.100).aspx
编辑:
你需要把协议前缀放在前面的地址,即你的情况“ftp://”
更好地使用Uri.IsWellFormedUriString(string uriString, UriKind uriKind)
。 http://msdn.microsoft.com/en-us/library/system.uri.iswellformeduristring.aspx
例如: –
if(Uri.IsWellFormedUriString(slct.Text,UriKind.Absolute)) { Uri uri = new Uri(slct.Text); if (DeleteFileOnServer(uri)) { nn.BalloonTipText = slct.Text + " has been deleted."; nn.ShowBalloonTip(30); } }
听起来这可能是一个相当的uri。 我在跨浏览器Silverlight时碰到这个问题; 在我的博客上,我提到了一个解决方法:通过一个“上下文”uri作为第一个参数。
如果这个uri是真实的,那么上下文uri被用来创build一个完整的uri。 如果uri是绝对的,那么上下文uri被忽略。
编辑:你需要在uri“计划”,例如,“ftp://”或“http://”
我通过使用UriBuilder来解决这个问题。
UriBuilder builder = new UriBuilder(slct.Text); if (DeleteFileOnServer(builder.Uri)) { ... }