WCF / IIS 400错误

时间:2012-10-31 15:09:28

标签: c# wcf url iis

我在IIS7中使用以下URL运行我的WCF服务(.NET 3.5)时遇到400错误:

http://localhost/mrlabatch/MRLABatchProcessingService.svc/events/sr123%20eb/ACCESSCONTROL,ADT,ADTDERIVATION,ADTSTATIONNUMBER,ADTYEAR,CITY,COUNTY,FACILITYTYPE,FEDERALAIDROUTENUMBER,FUNCTIONALCLASSIFICATION,JURISDICTION,LEFTSHOULDERTYPE,LEFTSHOULDERWIDTH,LEFTSIDEWALKWIDTH,MASSDOTHIGHWAYDISTRICT,MEDIANTYPE,MEDIANWIDTH,MPO,NHSSTATUS,NUMBEROFPEAKHOURLANES,NUMBEROFTRAVELLANES,RIGHTOFWAYWIDTH,RIGHTSHOULDERTYPE,RIGHTSHOULDERWIDTH,RIGHTSIDEWALKWIDTH,ROUTEKEY,SPEEDLIMIT,STREETNAME,STREETOPERATION,SUBROUTE,SURFACETYPE,SURFACEWIDTH,TERRAIN,TRUCKROUTE,UNDIVIDEDLEFTSHOULDERTYPE,UNDIVIDEDLEFTSHOULDERWIDTH,URBANIZEDAREA,URBANTYPE/?frommp=8.28489&tomp=10.30031

在Visual Studio中调试(当然指定不同的端口)时,url可以正常工作

如果我缩短了网址,它在VS和IIS中都可以正常工作:

http://localhost/mrlabatch/MRLABatchProcessingService.svc/events/sr123%20eb/ACCESSCONTROL,ADT,ADTDERIVATION,ADTSTATIONNUMBER,ADTYEAR,CITY,COUNTY,FACILITYTYPE,FEDERALAIDROUTENUMBER,URBANIZEDAREA,URBANTYPE/?frommp=8.28489&tomp=10.30031

我已经尝试在web.config中提升我的maxrequestlength:

网址大小是否还有其他阻碍???

3 个答案:

答案 0 :(得分:1)

问题在于我发布的网址。我应该在URL中添加正确的查询字符串:     ?事件=

 http://localhost/mrlabatch/MRLABatchProcessingService.svc/events/sr123%20eb/?events=ACCESSCONTROL,ADT,ADTDERIVATION,ADTSTATIONNUMBER,ADTYEAR,CITY,COUNTY,FACILITYTYPE,FEDERALAIDROUTENUMBER,FUNCTIONALCLASSIFICATION,JURISDICTION,LEFTSHOULDERTYPE,LEFTSHOULDERWIDTH,LEFTSIDEWALKWIDTH,MASSDOTHIGHWAYDISTRICT,MEDIANTYPE,MEDIANWIDTH,MPO,NHSSTATUS,NUMBEROFPEAKHOURLANES,NUMBEROFTRAVELLANES,RIGHTOFWAYWIDTH,RIGHTSHOULDERTYPE,RIGHTSHOULDERWIDTH,RIGHTSIDEWALKWIDTH,ROUTEKEY,SPEEDLIMIT,STREETNAME,STREETOPERATION,SUBROUTE,SURFACETYPE,SURFACEWIDTH,TERRAIN,TRUCKROUTE,UNDIVIDEDLEFTSHOULDERTYPE,UNDIVIDEDLEFTSHOULDERWIDTH,URBANIZEDAREA,URBANTYPE/?frommp=8.28489&tomp=10.30031

答案 1 :(得分:0)

我很确定你的网址因为一些无效的字符或太长而被修剪。

url lenght有一些限制。

尝试使用POST代替GET来传递这么多东西

答案 2 :(得分:0)

基于this article,似乎如果网址过长,您会收到404错误,而不是400.我会确保请求与网址长度不同。

您可以检查服务器上的IIS日志,以确保该URL(当它到达服务器时)是您所期望的。

在.NET框架中,网址似乎可能有260个字符的限制,但我认为这也会在VS网络服务器中失败。