无效的URI:无法确定URI的格式

时间:2010-05-22 11:42:19

标签: c# .net winforms 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格式?这是纯文本。

8 个答案:

答案 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 注释文件是否存在。