0

vs2010 を使用して、asp.net 4.0 で新しい wcf rest Web サービスを探しています。ここにURLを渡すための私のコードがあります:

"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"

output:Bad Request - Invalid URL HTTP Error 400. リクエスト URL が無効です。

私のWeb設定は次のとおりです: httpRuntime maxUrlLength="1024"

しかし、サーバーPCではなくローカルホストで動作しています。

前もって感謝します。

4

1 に答える 1

0

正直なところ、あなたの問題は、それが残りの URL ではないことです。URL は、扱っているリソースの場所である必要があり、リクエストの本文には、リクエストの詳細が含まれている必要があります (xml または json など)。それはあなたの問題を解決し、そのURLをクリアすることは言うまでもなく、リクエストオブジェクトサーバー側へのデシリアライゼーションを介してパラメーターを管理するためのコードを少なくします。

アップデート

PUT ではなく GET だと確信していますか? この呼び出しは何をするためのものですか?

それが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を完成させる必要がありますが、それはあなたが取るべきアプローチです.

于 2013-03-26T10:01:45.607 に答える