我创建了一个简单的函数来执行 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 部分有问题吗?
我遇到了这个问题,发现是我的粗心导致了这个问题。我在创建 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}/。添加斜杠解决了我的问题。
只是为了像我这样怀念愚蠢事情的人分享这个。
看看这个问题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)
我使用以下string.Concat()方法修复了此错误:-
var endPoint = new Uri(string.Concat("http://localhost:8080/jasperserver/rest_v2/users/", userName));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
37184 次 |
| 最近记录: |