0

我在我的项目中遇到了一个意想不到的问题。问题是我的代码中有一个动态生成的 URL,我必须通过 GET 请求将其提交给 RESTful Web 服务。例如,要提交的 URL 如下所示:http://mysampleserver.com:8080/calc/8999/bpaX

RESTful 服务器接受 URL 作为其最后一个参数,格式如下:

http://myRestfulAPI.domainname.com/capture/bbbb/http://mysampleserver.com:8080/calc/8999/bpaX

我还使用 System.Net.HttpUtility.UrlEncode(....) 首先对“要提交的 URL”进行编码,以将其合并到 RESTful 服务调用中。

这导致出现以下错误:

System.Web.HttpException:从客户端检测到潜在危险的 Request.Path 值 (:)

为了尝试解决它,我按照此网页描述的步骤进行操作,但没有运气。

我正在使用 MVC 4 在 C# 中实现 RESTful API。

任何线索或想法如何解决这个令人瞩目的问题?

4

3 回答 3

1

我能想到的解决方案至少有两种。

  1. 将您的 RESTFul 服务更改为使用 post,因为您将信息发送到您的服务器,并且可能会更改您的资源状态,基于 HTTP 协议,您无论如何都应该使用 POST。
  2. 您还可以使用 Base64 对您的网址进行编码
于 2013-05-10T03:52:23.177 回答
0

您尝试的步骤是正确的步骤。另请参阅此问题潜在危险......这是同一个问题。

默认情况下,.NET 不允许在 URL 中包含许多字符,而:是其中之一(至少作为查询字符串)。它们是“潜在危险的”。对配置文件进行此更改允许将这些字符传递给您的应用程序。

于 2013-05-10T03:50:52.983 回答
-1

您需要对查询字符串(mvc 参数)中的 url 进行 Url.Encode 编码,否则它将被解释为更多 URL 编码,以便 MVC 解码为参数。尝试类似@Url.Encode(yourStringObject) 并将其作为最后一个值或作为查询传递(即&q=url)

于 2013-05-10T03:44:52.070 回答