在任何浏览器中不工作maxlengthurl(太长)

本文关键字:maxlengthurl 太长 工作 任何 浏览器 | 更新日期: 2023-09-27 18:05:48

我正在寻找使用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"

输出:Bad Request - Invalid URL HTTP Error 400。

我的web配置是:httpRuntime maxUrlLength="1024"

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

在任何浏览器中不工作maxlengthurl(太长)

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

更新

你确定这是GET而不是PUT,调用的目的是什么?

如果是GET,我会做如下操作…

<<p> 服务接口/strong>
[WebGet(UriTemplate = "monthlytips")]
AppropriateReturnType MonthlyTips(MonthlyTip monthlytip);
<<p> DTO对象/strong>
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等等,但这是你应该采取的方法。