【问题标题】:Self-Hosting WCF for AJAX Client用于 AJAX 客户端的自托管 WCF
【发布时间】:2010-12-20 00:24:29
【问题描述】:

我正在尝试自托管 WCF Web 服务并提供支持 ajax 的 HTTP 端点。我发现的关于 WCF 和 AJAX 的几乎所有内容都在谈论 IIS,我不想使用它。

我已经构建了一个简单的控制台应用程序来托管服务。我的服务只有一个方法:

[ServiceContract]
interface IMyService
{
    [OperationContract]
    string TestConnection();
}

这里是 app.config 代码:

<services>
  <service name="Service.MyService" behaviorConfiguration="MyServiceBehavior" >
    <endpoint address="" binding="webHttpBinding" behaviorConfiguration="WebBehavior" contract="Service.IMyService" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
  </service>
</services>

<behaviors>
  <endpointBehaviors>
    <behavior name="WebBehavior">
      <enableWebScript/>
    </behavior>
  </endpointBehaviors>
  <serviceBehaviors>
    <behavior name="MyServiceBehavior" >
      <serviceMetadata httpGetEnabled="true" />
    </behavior>
  </serviceBehaviors>
</behaviors>

我可以访问服务元数据端点并查看 WSDL,但我无法从我的 ajax 客户端使用它。所以我的问题是: 1. 可以这样做吗? 2. 我显然缺少什么所需的配置?

注意我没有使用 .svc 文件

谢谢!

【问题讨论】:

  • 客户端是否在网络浏览器中运行?如果是这样,您可能遇到了浏览器的跨域 XHR 限制。
  • 是的,这是我的问题之一!

标签: ajax wcf self-hosting


【解决方案1】:

你的客户是什么?使用 enableWebScript,您将获得 ASP.NET AJAX 支持(例如,修饰的成员、类型和所有其他暗示的内容)。如果您想要“原始”JSON,请使用 webHttp 行为而不是 enableWebScript,并使用 WebInvokeAttribute 或 WebGetAttribute 标记您的界面操作(根据需要将请求/响应类型设置为 JSON 或 XML)。看起来您还没有使用 ServiceContractAttribute 来为您的接口归因,这是必需的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-06
    • 2018-11-07
    • 2013-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多