2012-02-03 177 views
0

我想在VS2010(.NET 4)中使用一種接收三個字符串參數的方法創建一個簡單的REST服務。我希望它使用GET和POST(因爲3'rd PARAM可能有時相當大)簡單REST服務與WCF

在課堂MyREST.cs訪問我有這樣的代碼

[WebGet(UriTemplate = "s={s}&sp={sp}&p={p}")] 
    public string Process(string s, string sp, string p) 
    { 
     // some processing 
     return result; 
    } 

同爲POST

當我試着使用一個URL來訪問服務像

http://localhost:57129/OneTestREST/s=str1&sp=str2&p=str3 

我得到錯誤

異常詳細信息:System.Web.HttpException:潛在危險 從客戶端檢測到Request.Path值(&)。

如果我改變屬性

[WebGet(UriTemplate = "/{s}/{sp}/{p}")] 

它工作正常。但我想用第一種語法訪問它

任何想法爲什麼會發生這種情況?

謝謝

+0

從[本網站](http://www.cryer.co.uk/brian/mswinswdev/ms_vbnet_server_error_potentially_dangerous.htm)[I] nstead您可以逐頁關閉驗證功能,您可以全局關閉請求驗證(但在這種情況下請務必執行下面的第二項)。要全局關閉請求驗證,請將以下內容添加到您的web.config文件中: 這應該在部分中進行。這將關閉應用程序中每個頁面的請求驗證。 雖然要小心。警告是有原因的。 – kush 2012-02-03 16:49:28

+1

謝謝,我發現該網站,但我不想使用該方法。 – bzamfir 2012-02-03 16:59:46

回答

1
[WebGet] 
public string Process(string s, string sp, string p) 
{ 
    // some processing 
    return result; 
} 

然後

http://localhost:57129/OneTestREST/?s=str1&sp=str2&p=str3 
+0

我試過了,但它什麼都沒做......它只是將我重定向到缺省服務頁面,這是sais「找不到端點。請參閱服務幫助頁面,以構建對服務的有效請求。」 – bzamfir 2012-02-03 16:55:59

+0

對不起,我忘了[WebGet]屬性 – Joe 2012-02-03 17:15:16

+0

我已經使用UriTemplate param屬性了(正如你在我的文章中看到的那樣)。我應該使用它沒有參數,只依靠方法參數? – bzamfir 2012-02-04 10:04:10