WCF/WebAPI:当我向 WebGet 方法传递多个参数时出现 HTTP 500 错误

发布于 2024-12-08 06:32:54 字数 1129 浏览 0 评论 0原文

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

摘要: 我无法向 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初相遇 2024-12-15 06:32:54

使用 false 而不是 0 表示 unreadonly

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

请参阅 WCF Web HTTP 编程模型概述,特别是 UriTemplate查询字符串参数和 URL 部分,用于按数据类型列出查询字符串参数格式。

Use false instead of 0 for unreadonly:

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文