2013-03-26 38 views
0

我正在使用vs2010在asp.net 4.0中尋找新的wcf rest web服務。 這裏是我的傳球URL代碼:在任何瀏覽器中不工作maxlengthurl(太長)

"homewizard/Service1.svc/monthlytips/country_state=US_IL_N/tip_code=NoInformation/feature=ACC,FAHD,WHG,FP,WA,DY,DWSH,GD,REF,STV,OVN,MW,CPTR,ATT,ROOF,RG,BSMT,FDN,SPX,GAR,EGF,PLB,DOOR,WIND,WS,LWN,DKG,PF,BBQ,WSD,OWF,DWY,OLIT,HL,SPTC,CF,WF,CPTS,DVB,FURW,FURL,FURU,MAT,BATH,KITC,CLST,LITE,SD,COD,FE,EMS,PC,SS,MED,EAUD,ENR,GARR,INR,MGR,TAXR,TELR,CGD,DOOR,WIND,WS/dwelling_type=1/tip_priority=1/month=3/tip_knowledge_level=1/tipbr_ensav=0/tipbr_safe=0/tipbr_avoid=1/tipbr_comfort=1/tipbr_value=1/tipbr_appear=1/tipbr_green=0/tipbr_money=0/tipbr_space=1/tipbr_allergy=2/tipbr_elderly=2/tipbr_children=2/tip_location_temp=0/tip_location_humidity=0" 

輸出:錯誤的請求 - 無效URL HTTP 400錯誤的請求URL無效。

我的web配置爲:的httpRuntime maxUrlLength = 「1024」

,但它的工作我的本地主機不在服務器PC。

在此先感謝。

+0

爲什麼你需要這樣的URL?你不能以另一種方式傳遞你的參數嗎? – 2013-03-26 08:43:43

回答

0

說實話你的問題是,這不是一個restfull URL,url應該只是你正在處理的資源的位置,請求的主體應該包含請求的細節(如xml或json for例)。它既能解決你的問題,又能減少代碼,通過反序列化將參數管理到請求對象服務器端,更不用說清理那個URL。

UPDATE

你確定那是一個GET而不是PUT,什麼是呼叫意思呢?

如果是一個GET我會做類似如下...

服務接口

[WebGet(UriTemplate = "monthlytips")] 
AppropriateReturnType MonthlyTips(MonthlyTip monthlytip); 

DTO對象

public class MonthlyTip 
{ 
    public string CountryState { get; set; } 
    public string TipCode { get; set; } 
    public List<string> Feature { get; set; } 
    public int DwellingType { get; set; } 
    public int TipPriority { get; set; } 
    ... 
    ... 
} 

那是假頂我的頭,所以它可能需要一點改進,你需要實現接口,完成DTO等等,但這是你應該採取的方法。

+0

這是我的代碼,如您所請求。 [OperationContract的] [WebGet(ResponseFormat = WebMessageFormat.Json,UriTemplate =「monthlytips/country_state = {country_state}; – Naresh 2013-03-28 05:47:56

+1

看看上述更新 – 2013-03-28 16:28:07

相關問題