我已经通过以下链接使用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="Data Source=bdowrmg01;Initial Catalog=ORMU_Prototype;user=sa;password=Password1;MultipleActiveResultSets=True"" 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();
}
答案 0 :(得分:1)
服务引用仅适用于SOAP Web服务(通过WSDL定义),而不适用于您所拥有的Web HTTP(也称为REST)服务。
因此,您需要使用HttpWebRequest
类来使用您的服务,或者为wsHttpBinding
类型的服务添加另一个绑定。