我在Visual Studio 2010中使用C#创建一个非常基本的WCF服务.我想知道是否可以通过键入以下内容直接从浏览器运行我的方法://localhost:49815/Service1.svc/methodName(parameterValue)?
这是我的代码的本质.
接口:
using ...
namespace WcfService1{
[ServiceContract]
public interface IService1{
[OperationContract]
[WebGet]
string echoWithGet(string s);
[OperationContract]
[WebInvoke]
string echoWithPost(string s);
}
}
Run Code Online (Sandbox Code Playgroud)
方法:
public string echoWithGet(string s ){
return "Get: "+s;
}
public string echoWithPost(string s){
return "Post: " + s;
}
Run Code Online (Sandbox Code Playgroud)
Mic*_*eld 46
是的,如果您的服务配置正确,您可以在浏览器中调用这些方法,尽管您的URL语法有误.
要从浏览器调用WCF方法,您需要做两件事:
[WebGet]和[WebInvoke]属性.使用a webHttpBinding作为服务的端点并启用该webHttp行为.有关示例配置,请参阅http://weblogs.asp.net/kiyoshi/archive/2008/10/08/wcf-using-webhttpbinding-for-rest-services.aspx,但相关部分包括:
<service>
<endpoint behaviorConfiguration="webBehavior" binding="webHttpBinding" contract="MyServiceContract" />
</service>
<endpointBehaviors>
<behavior name="webBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
Run Code Online (Sandbox Code Playgroud)完成后,WCF将开始侦听URL请求并将其路由到适当的Web方法.您可以设置URL模板您WebGet或WebPost属性映射URL细分方法的参数,如果你想使你的网址"清洁工",但这是可选的.否则,您使用参数分隔符以与将参数传递到任何其他URL相同的方式传递参数:
http://localhost:49815/MyService.svc/methodName?parameterName=value
Run Code Online (Sandbox Code Playgroud)
请注意,Web调用方法的默认值是POST.从技术上讲,你可以通过浏览器来完成这些操作,但是它更难(你必须制作一个本地HTML表单,或者使用你的Javascript控制台或类似的东西),但WebGet只需要请求正确的URL就可以调用这些方法.
此外,如果您的方法返回比字符串更复杂的东西,WCF将尝试将其序列化为JSON; 您可能需要在结果页面上"查看源代码"才能看到它.
这不能解答您的问题,但它会让您的生活变得更容易,使您的服务RESTful(或类似REST).虽然您可以使用WCF执行此操作,但我强烈建议您查看ASP.NET Web API.
还有其他可用于创建RESTful服务的替代方案,例如Nancy或ServiceStack.