从浏览器运行WCF方法

我在Visual Studio 2010中使用C#创建一个非常基本的WCF服务。我想知道我是否可以通过键入类似于: //localhost:49815/Service1.svc/methodName(parameterValue)//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); } } 

方法:

  public string echoWithGet(string s ){ return "Get: "+s; } public string echoWithPost(string s){ return "Post: " + s; } 

是的, 如果您的服务配置正确,您可以在浏览器中调用这些方法,尽管您的URL语法有误。

要从浏览器调用WCF方法,您需要做两件事:

  • 在您的方法上使用[WebGet][WebInvoke]属性,您已完成。
  • 使用webHttpBinding作为服务的端点并启用webHttp行为。 有关示例配置,请参阅http://weblogs.asp.net/kiyoshi/archive/2008/10/08/wcf-using-webhttpbinding-for-rest-services.aspx ,但相关部分包括:

              

完成后,WCF将开始侦听URL请求并将其路由到适当的Web方法。 您可以在WebGetWebPost属性中设置URL模板,以便将URL段映射到方法参数,如果您想使URL“更干净”,但这是可选的。 否则,使用参数分隔符以与将参数传递到任何其他URL相同的方式传递参数:

 http://localhost:49815/MyService.svc/methodName?parameterName=value 

请注意,Web调用方法的默认值是POST。 从技术上讲,您可以通过浏览器执行这些操作,但这样做更困难(您必须制作本地HTML表单,或使用您的Javascript控制台或类似的东西),但只需通过请求正确的URL即可调用WebGet方法。

此外,如果您的方法返回比字符串更复杂的东西,WCF将尝试将其序列化为JSON; 您可能需要在结果页面上“查看来源”才能看到它。

这不能回答你的问题,但它会让你的生活变得更容易,使你的服务RESTful(或类似REST)。 虽然您可以使用WCF执行此操作,但我强烈建议您查看ASP.NET Web API 。

还有其他可用于创建RESTful服务的替代方案,例如Nancy或ServiceStack 。

一个直接的答案。 对于GET方法,您可以使用浏览器查看结果。 FOR POST方法如果您直接粘贴post方法的url,则无法使用Browser。 为了实现POST,您可以创建HTML FORM或使用FIDDLER查看结果。