返回404我有一個的WebAPI控制器,看起來像這樣的方法:我有專門爲此操作配置的自定義路線與電子郵件地址參數的WebAPI方法從HttpClient的
[HttpGet]
[AcceptVerbs("GET")]
public HttpResponseMessage Run(string reportName, int someId, string someText, DateTime asOfDate, string username)
。當我瀏覽我的瀏覽器的Web服務,一切工作正常,並執行相應的操作:
http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/[email protected]
然而,當我嘗試使用的HttpClient和執行「獲取」我得到編程調用Web服務一個404錯誤。當用戶名參數不是電子郵件地址時,我不會收到錯誤消息。例如,當用戶名只是「用戶」,一切正常。這裏是示例代碼:
var url = "http://localhost:xxxx/ControllerName/Run/asdf/1/asdf/07-01-2012/[email protected]"
var client = new System.Net.Http.HttpClient();
var response = client.Get(url);
//fails here with 404 error
response.EnsureSuccessStatusCode();
我試過UrlEncoding電子郵件地址沒有運氣。任何建議表示讚賞。
嘗試用%替換@ 40 - 編輯 - 只是一個完整的隨機猜測。 -Edit2- UrlEncoding應該已經爲你切換,所以如果我告訴你的工作,你可能想檢查你如何使用UrlEncoding和可能的參數。 – Pluc
考慮到請求的複雜性,您可能希望使用「POST」動詞併發送自定義複雜對象。然後你還可以跳過其他一些問題,比如不可能在任何字符串中傳遞字符'/'。 – user1908061
@Pluc,我給你的建議一次沒有預期的成功,因爲這正是urlecode正在做的。感謝壽。 –