适用于AJAX客户端的自托管WCF

时间:2009-11-24 19:02:35

标签: ajax wcf self-hosting

我正在尝试自托管WCF Web服务并为HTTP端点提供ajax支持。几乎我发现的关于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文件

谢谢!

1 个答案:

答案 0 :(得分:1)

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