我想使用url查询字符串调用wcf webservice。就像我有一个webserive暴露ADD方法添加两个整数。我想使用http://mywebserviceAddress/Add?x=4&y=5
来调用此服务是否可以这样做。我是webservices的新手,对大多数人来说这可能很容易。
答案 0 :(得分:4)
看看以下示例是否可以帮助您:
服务合同
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebGet(UriTemplate="Add/{x}/{y}",ResponseFormat=WebMessageFormat.Xml)]
int Add(string x, string y);
}
服务实施:
public class Service1 : IService1
{
public int Add(string x, string y)
{
return Convert.ToInt32(x) + Convert.ToInt32(y);
}
}
网络配置:
<system.serviceModel>
<services>
<service name="WcfService1.Service1" behaviorConfiguration="WcfService1.Service1Behavior">
<endpoint address="" binding="webHttpBinding" behaviorConfiguration="webBehavior" contract="WcfService1.IService1">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="WcfService1.Service1Behavior">
<serviceMetadata httpGetEnabled="false"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
</system.serviceModel>
客户代码:
WebRequest request = WebRequest.Create("http://localhost:2156/Service1.svc/Add/2/3");
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Console.WriteLine("Request to add numbers: ");
Console.WriteLine("Request status: " + response.StatusDescription);
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
string responseFromServer = reader.ReadToEnd();
Console.WriteLine("Response: \n" + responseFromServer);
Console.ReadLine();
答案 1 :(得分:3)
如果要使用直接HTTP谓词调用WCF服务,则需要使用webHttpBinding
创建WCF REST服务。
查看一些资源:
Endpoint.TV截屏视频:
Endpoint.TV通常对WCF和WCF REST的内容有很好的报道。
答案 2 :(得分:0)
它是您要构建的WS还是您想要使用的已存在的WS?
如果要构建一个,请参阅REST Web服务。
查看REST的MSDN页面,您会找到文章,视频,培训,代码示例等。 http://msdn.microsoft.com/en-us/netframework/cc950529.aspx