无效的 URI:在 C# 中指定带有端口号的 URL 时指定的端口无效,例如 http://localhost:8080/jasperserver/rest

Roo*_*kie 7 c# http-request

我创建了一个简单的函数来执行 Http PUT 请求 -

public string checkIfUserExists(string userName)
    {
        var endPoint = new Uri("http://localhost:8080/jasperserver/rest_v2/users/"+userName);

        var request = (HttpWebRequest)WebRequest.Create(endPoint);
        request.Method = "PUT";
        request.ContentType = "urlencoded";

        var response = (HttpWebResponse)request.GetResponse();

        return "Success";
    }
Run Code Online (Sandbox Code Playgroud)

当我执行此操作时,我在该行收到异常“无效的 URI:指定的端口无效” -

var endPoint = new Uri("http://localhost:8080/jasperserver/rest_v2/users/"+userName);
Run Code Online (Sandbox Code Playgroud)

有解决这个问题的想法吗?URL 的 localhost:8080 部分有问题吗?

Sib*_*enu 7

我遇到了这个问题,发现是我的粗心导致了这个问题。我在创建 HttpRequestMessage 实例时遇到了问题,如下所示。

var request = new HttpRequestMessage(new HttpMethod("PUT"), 
                    $"{_nextcloudConfigurationProvider.NextcloudBaseUrl}{FileConstants.ApiUploadFile.Replace("{UserName}", UserName)}");
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

问题是我在第二个常量之前错过了斜杠“/”。它remote.php/dav/files/{UserName}/{directoryName}/代替了/remote.php/dav/files/{UserName}/{directoryName}/。添加斜杠解决了我的问题。

只是为了像我这样怀念愚蠢事情的人分享这个。


ste*_*-fu 6

看看这个问题Invalid URI: Invalid port specified when url has more colony

您是否检查过您的用户名中是否存在可能导致问题的字符?

评论后编辑 - 我引用这个问题的原因是因为发生“无效端口”错误不是因为实际端口错误,而是因为 URL 中的其他无效字符。验证用户名是否正确编码可以防止此问题。

var endPoint = new Uri("http://localhost:8080/jasperserver/rest_v2/users/" 
      + HttpUtility.UrlEncode(userName));
Run Code Online (Sandbox Code Playgroud)


Roo*_*kie 2

我使用以下string.Concat()方法修复了此错误:-

var endPoint = new Uri(string.Concat("http://localhost:8080/jasperserver/rest_v2/users/", userName));
Run Code Online (Sandbox Code Playgroud)