WCF/WebAPI:当我向 WebGet 方法传递多个参数时出现 HTTP 500 错误
我有一个非常愚蠢的问题,但由于某种原因,我无法在网上找到任何解决方法或有关它的信息。
摘要: 我无法向 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) {
...
}
}
全球.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
提前感谢您的帮助!
PS 我尝试对“&”进行 HTML 编码在查询字符串中——没有效果。
I have a very dumb problem but for some reason I am unable to find any cure or information about it on the Net.
Summary: I cannot pass to a WebGet method more than one parameter. If I do, server returns HTTP 500 error and the method does not execute. My code and requests are below.
[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/");
This request executes fine:
http://localhost:9000/api/Webmail/?messagetype=1
This one returns the 500 error:
http://localhost:9000/api/Webmail/?messagetype=1&unreadonly=0&skip=0&take=100
Info:
VS2010 SP1 + ASP.NET 4 + Entity Framework June 2001 CTP + latest WebAPI
Thanks for any help in advance!
P.S. I tried to HTML-encode "&" in the query string -- no effect.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用
false
而不是0
表示unreadonly
:http://localhost:9000/api/Webmail/?messagetype=1&unreadonly=false&skip=0&take=100
请参阅 WCF Web HTTP 编程模型概述,特别是 UriTemplate查询字符串参数和 URL 部分,用于按数据类型列出查询字符串参数格式。
Use
false
instead of0
forunreadonly
:http://localhost:9000/api/Webmail/?messagetype=1&unreadonly=false&skip=0&take=100
See the WCF Web HTTP Programming Model Overview, specifically the UriTemplate Query String Parameters and URLs section for the query string parameter formats by data type.