1

我已经根据我找到的最新教程设置了我的服务,并且一切似乎都运行良好。

然而,

为了访问包含 QueryParameters 集合(例如 ?name=tom&age=20)的 WebOperationContext.Current.IncomingRequest.UriTemplateMatch 类,我需要将服务配置为使用 WebHttpBehavior。我设法让它工作的唯一方法是使用控制台应用程序中的 WebServiceHost 自行托管它。我无法通过 IIS 或 cassini 的 web.config 或 global.asax 让它工作。

我觉得奇怪的是,关于如何使用 web-api 的教程在 IIS 中托管东西之前谈论 IoC:那不是更有用吗?他们似乎都在使用极其简单的服务,根本不使用查询字符串,还有 IoC!

以下是我发现的几乎提到问题但没有解决问题的资源:

4

1 回答 1

3

你可以这样做:

[ServiceContract]
public class ContactResource {
    [WebGet(UriTemplate = "")]
    public HttpResponseMessage<Contact> Get(HttpRequestMessage request) {
        var querystring = request.RequestUri.Query;
        var parameters = HttpUtility.ParseQueryString(querystring);
        var name = parameters["Name"];
        return new HttpResponseMessage<Contact>(
            new Contact()
                {
                    Id = Guid.NewGuid(),
                    Name = name
                });
    }
}

http://localhost:12741/contact?name=George

产量:

<Contact>
<Id>19bae3a5-e2b7-4858-8aa4-08161ea18018</Id>
<Name>George</Name>
</Contact>
于 2011-09-08T10:16:18.183 回答