从浏览器运行WCF方法

jav*_*nja 30 c# wcf

我在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方法,您需要做两件事:

完成后,WCF将开始侦听URL请求并将其路由到适当的Web方法.您可以设置URL模板您WebGetWebPost属性映射URL细分方法的参数,如果你想使你的网址"清洁工",但这是可选的.否则,您使用参数分隔符以与将参数传递到任何其他URL相同的方式传递参数:

http://localhost:49815/MyService.svc/methodName?parameterName=value
Run Code Online (Sandbox Code Playgroud)

请注意,Web调用方法的默认值是POST.从技术上讲,你可以通过浏览器完成这些操作,但是它更难(你必须制作一个本地HTML表单,或者使用你的Javascript控制台或类似的东西),但WebGet只需要请求正确的URL就可以调用这些方法.

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


pet*_* k. 5

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

还有其他可用于创建RESTful服务的替代方案,例如NancyServiceStack.