繁体   English   中英

无法将GET请求中的URL传递给C#中的RESTful Web服务

[英]Unable to pass a URL in GET request to a RESTful web service in C#

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

任何线索或想法如何解决这个showstopper问题?

我至少可以想到两种解决方案。

  1. 将RESTFul服务更改为使用post,因为您将信息发送到服务器,并且可能会基于HTTP协议更改资源状态,因此无论如何都应使用POST。
  2. 您还可以使用Base64对网址进行编码

您尝试过的步骤才是正确的步骤。 另请参阅此潜在危险的问题……这是相同的问题。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM