我对如何做到这一点感到有些困惑。我在搜索之后跟踪了一些例子,但仍然无法使其工作,然后大多数例子似乎都针对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"
这不起作用,所以我尝试使用标准查询字符串参数但不工作的几个变体。
我做错了什么还是缺少一步?
答案 0 :(得分:1)
要使用WebGet
/ WebInvoke
属性,您不能使用basicHttpBinding
(或者,您可以使用它,但这些属性将被忽略)。 BasicHttpBinding是使用SOAP协议的绑定之一,它对消息的格式有一些强烈的要求(简而言之,几乎所有内容都在请求体中,并且一些寻址参数可能在HTTP头中)。
为了能够使用WebGet
属性定义端点操作,您的端点需要使用webHttpBinding
,并且还需要对其应用<webHttp/>
行为({ {1}},如果您通过代码定义终端。
还有一件事值得指出:如果你使用&#34; web&#34;在端点,WSDL将不具备将客户端连接到它的所有信息,因此您无法使用&#34; WCF测试客户端&#34;跟它说话。有关它的更多信息,请访问this blog post。