我一直收到这个错误。
无效的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格式?这是纯文本。
答案 0 :(得分:100)
为Uri使用不同的构造函数可能会有所帮助。
如果您有服务器名称
string server = "http://www.myserver.com";
并有一个相对的Uri路径附加到它,例如
string relativePath = "sites/files/images/picture.png"
当从这两个创建Uri时,我得到“格式无法确定”的异常,除非我使用带有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);
答案 1 :(得分:53)
检查可能的原因:http://msdn.microsoft.com/en-us/library/z6c2z492(v=VS.100).aspx
编辑:
您需要将协议前缀放在地址前面,即在您的情况下“ftp://”
答案 2 :(得分:12)
听起来它可能是一个重要的uri。我在进行跨浏览器Silverlight时遇到了这个问题。在我blog上我提到了一种解决方法:将“context”uri作为第一个参数传递。
如果uri是实际的,则使用上下文uri来创建完整的uri。如果uri是绝对的,则忽略上下文uri。
编辑:您需要在uri中使用“方案”,例如“ftp://”或“http://”
答案 3 :(得分:10)
更好地使用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);
}
}
答案 4 :(得分:6)
我使用UriBuilder来解决这个问题。
UriBuilder builder = new UriBuilder(slct.Text);
if (DeleteFileOnServer(builder.Uri))
{
...
}
答案 5 :(得分:1)
对我来说,问题是当我获得域名时,我拥有:
cloudsearch -..-..- xxx.aws.cloudsearch ... [WRONG]
http://cloudsearch-..-..-xxx.aws.cloudsearch ... [RIGHT]
希望这能为您完成工作:)
答案 6 :(得分:1)
我在尝试设置 Docker 时遇到了这样的调试错误。
我在“launchSettings.json”中设置了docker设置如下。
问题已解决。
"Docker":
{
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/",
"publishAllPorts": false,
"useSSL": true
}
答案 7 :(得分:0)
如果您为应用启用了 SwaggerDoc,请检查 xml 注释文件是否存在。