0

我正在使用 vs2010 在 asp.net 4.0 中寻找新的 wcf rest web 服务。这是我传递网址的代码:

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

输出:Bad Request - Invalid URL HTTP 错误 400。请求 URL 无效。

我的网络配置是:httpRuntime maxUrlLength="1024"

但它在我的本地主机上工作,而不是在服务器 pc 上。

提前致谢。

4

1 回答 1

0

老实说,您的问题是这不是一个完整的 URL,该 url 应该只是您正在处理的资源的位置,请求的主体应该包含请求的详细信息(例如 xml 或 json)。它既可以解决您的问题,又可以减少通过反序列化到请求对象服务器端来管理参数的代码,更不用说清除该 url。

更新

你确定那是一个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 等等,但这是你应该采取的方法。

于 2013-03-26T10:01:45.607 回答