WCF / Web API:当我将多个参数传递给WebGet方法时出现HTTP 500错误

时间:2011-10-04 16:05:47

标签: wcf wcf-web-api

我有一个非常愚蠢的问题,但由于某种原因,我无法在网上找到任何治疗或信息。

总结:我无法将多个参数传递给WebGet方法。如果我这样做,服务器返回HTTP 500错误,该方法不会执行。我的代码和请求如下。

[ServiceContract]
public class WebmailAPI {
...
[WebGet(UriTemplate= "Webmail?messagetype={messageType}&unreadonly={unreadOnly}&skip={skip}&take={take}")]
    public void Get(MessageType messageType, bool unreadOnly, int skip, int take) {
    ...
    }
 }

的global.asax.cs:      routes.SetDefaultHttpConfiguration(new WebApiConfiguration(){EnableHelpPage = true,EnableTestClient = true});      RouteTable.Routes.MapServiceRoute( “API /”);

此请求执行正常: http://localhost:9000/api/Webmail/?messagetype=1

这个返回500错误:

http://localhost:9000/api/Webmail/?messagetype=1&unreadonly=0&skip=0&take=100

的信息: VS2010 SP1 + ASP.NET 4 +实体框架2001年6月CTP +最新WebAPI

提前感谢您的帮助!

P.S。我试着用HTML编码“&”在查询字符串中 - 没有效果。

1 个答案:

答案 0 :(得分:6)

false使用0代替unreadonly

http://localhost:9000/api/Webmail/?messagetype=1&unreadonly=false&skip=0&take=100

请参阅WCF Web HTTP Programming Model Overview,特别是 UriTemplate查询字符串参数和URL 部分,了解数据类型的查询字符串参数格式。