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)) { ... }