【问题标题】:Run WCF methods from a browser从浏览器运行 WCF 方法
【发布时间】:2013-09-24 18:36:51
【问题描述】:

我正在 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);
    }
}

方法:

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

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

【问题讨论】:

  • 只是好奇...你试过了吗?
  • 是的,如果通过“尝试”,您是指通过我建议的格式调用该方法。
  • 您需要向我们展示您正在使用的服务器端配置!尤其是 binding 至关重要——你用的是哪一个??
  • @user2635032 你可以用喜欢你建议的格式做你想做的事,但不是完全你建议的格式;我提供的链接包含正确格式的示例。

标签: c# wcf


【解决方案1】:

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

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

  • 在您的方法中使用 [WebGet][WebInvoke] 属性,您已经这样做了。
  • 使用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> 
    

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

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

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

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

【讨论】:

  • 这个答案可能会产生误导,因为它听起来好像您只能使用 webHttpBinding 从浏览器访问 WCF 方法。是这样吗? &lt;enableWebScript/&gt; 指令呢?
  • 你还需要一件事...uri
【解决方案2】:

这并不能回答您的问题,但它会让您的服务更加轻松(或类似 REST)。虽然您可以使用 WCF 做到这一点,但我强烈建议您查看 ASP.NET Web API

还有其他方法可用于创建 RESTful 服务,例如 NancyServiceStack

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-24
      • 2013-10-19
      • 1970-01-01
      • 2014-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多