将查询参数传递给WCF服务

时间:2015-04-23 14:56:42

标签: c# vb.net wcf wcf-binding

我对如何做到这一点感到有些困惑。我在搜索之后跟踪了一些例子,但仍然无法使其工作,然后大多数例子似乎都针对Json(不确定这是否会产生影响)。

我使用basicHttpBinding。

所以我有一个简单的界面:

<ServiceContract()>
 Public Interface ICustomersService
<OperationContract()>
<WebGet(UriTemplate:="SaveName/{name}")> 
Sub SaveName(ByVal name as string)

接下来我创建我的托管应用程序,它可以工作,我可以访问WSDL页面,并可以查看SaveName。

当前网址为http://example.com/

我想传入一个名称然后保存到数据库中。我希望URL与

一致
http://example.com/SaveName?name="Tony"

这不起作用,所以我尝试使用标准查询字符串参数但不工作的几个变体。

我做错了什么还是缺少一步?

1 个答案:

答案 0 :(得分:1)

要使用WebGet / WebInvoke属性,您不能使用basicHttpBinding(或者,您可以使用它,但这些属性将被忽略)。 BasicHttpBinding是使用SOAP协议的绑定之一,它对消息的格式有一些强烈的要求(简而言之,几乎所有内容都在请求体中,并且一些寻址参数可能在HTTP头中)。

为了能够使用WebGet属性定义端点操作,您的端点需要使用webHttpBinding,并且还需要对其应用<webHttp/>行为({ {1}},如果您通过代码定义终端。

还有一件事值得指出:如果你使用&#34; web&#34;在端点,WSDL将不具备将客户端连接到它的所有信息,因此您无法使用&#34; WCF测试客户端&#34;跟它说话。有关它的更多信息,请访问this blog post