从浏览器运行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方法。 您可以在WebGet
或WebPost
属性中设置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查看结果。