WCF:使用jQuery和Windows应用程序来使用WCF服务

时间:2011-05-13 09:58:56

标签: jquery wcf json poco

我已经通过以下链接使用jQuery成功使用了WCF服务:http://www.codeproject.com/KB/aspnet/WCF_JQUERY_ASMX.aspx

我刚刚为我的POCO实体做了一些修改,以便正确序列化。如果由jQuery使用或使用浏览器查看(更改动词获取),一切正常。

现在我已经创建了一个Windows应用程序并添加了对此服务的服务引用。它成功完成,我可以看到类/方法和所有。但是,当我尝试运行该应用程序时,出现以下错误:

“无法在ServiceModel客户端配置部分找到引用合同[ContractName]的默认端点元素。这可能是因为没有找到您的应用程序的配置文件,或者因为在客户端中找不到与此合同匹配的端点元素元素“。

根据这个错误,我想我应该创建另一个端点来迎合非http应用程序?我不确定它是如何工作的..

这是我的webconfig

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <connectionStrings>
    <add name="EntityDataModelContainer" connectionString="metadata=res://*/EntityDataModel.csdl|res://*/EntityDataModel.ssdl|res://*/EntityDataModel.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=bdowrmg01;Initial Catalog=ORMU_Prototype;user=sa;password=Password1;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
  </connectionStrings>
  <system.web>
    <compilation debug="true" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior name="ORMDefaultServiceBehavior">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="ORMDefaultServiceBehavior">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <services>
      <service behaviorConfiguration="ORMDefaultServiceBehavior"
                 name="ORM.Business.KCSA">
        <endpoint address="" binding="webHttpBinding"
           contract="ORM.Business.IKCSA"
           behaviorConfiguration="ORMDefaultServiceBehavior"/>
      </service>
    </services>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true"/>
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true" />
  </system.webServer>
</configuration>

另外,这是合同:

[ServiceContract]
public interface IKCSA
{
    [OperationContract]
    [ApplyDataContractResolver]
    [WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped,Method="GET",ResponseFormat=WebMessageFormat.Json)]
    JsonResponse<IEnumerable<KCSATopic>> GetTopics();
}

1 个答案:

答案 0 :(得分:1)

服务引用仅适用于SOAP Web服务(通过WSDL定义),而不适用于您所拥有的Web HTTP(也称为REST)服务。

因此,您需要使用HttpWebRequest类来使用您的服务,或者为wsHttpBinding类型的服务添加另一个绑定。