簡體   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