HTTPClient控制台应用程序的文件名中的点字符导致400错误请求

本文关键字:字符 错误 请求 控制台 应用程序 文件名 HTTPClient | 更新日期: 2023-09-27 18:12:08

我有一个控制台应用程序,它使用HTTPClient在web服务器上上传文件。相关守则-

var client = new HttpClient();
//Set Auth Headers
var response = client.PutAsync(fullUrl, content).Result;

这工作得很好,直到我有一个点在fullUrl。我读到在web.config中使用relaxedUrlToFileSystemMapping。我在我的App.config文件中添加了它,因为这是一个控制台应用程序,但它没有效果。还有什么其他选择可以让它发挥作用?

工作示例URL - http://myServer/commons/1.0/commons-logging-1-0.jar

非工作示例URL - http://myServer/commons/1.0/commons-logging-1.0.jar

注意,不工作的JAR名称用commons-logging-1.0.jar代替了commons-logging-1-0.jar

我得到的例外是StatusCode: 400, ReasonPhrase: 'Bad Request'

HTTPClient控制台应用程序的文件名中的点字符导致400错误请求

句点是有效的URL字符。你的问题与月经无关。如果动态构建URL,则应该转义查询字符串。转义期间相当于'%2E',所以尝试,如果你仍然得到相同的错误,那么你应该尝试使用Chrome调试器工具(F12)或Fiddler工具跟踪你的请求/响应,并检查发送到服务器的内容。

在c#中有很多方法来编码URL字符串,其中之一就是HttpUtility
string url = HttpUtility.UrlEncode("http://myServer/commons/1.0/commons-logging-1.0.jar");