这是我的链接:http://localhost:54483/BusinessService.svc/GetCustomers?numberOf=12&valid=true
始终得到"错误请求"在客户端站点执行时出错。 停留在首页(您已创建服务...)在浏览器中输入URL时。
遵循以下方法:
[ActionName("GetCustomers")]
[HttpGet]
public System.Collections.Generic.List<BusinessObjects.Customer> GetCustomers(byte numberOf, bool valid) {
return BS.GetCustomers(byte numberOf, bool valid); //BS = BusinessService Instance
}
修改
这是我的BusinessService界面:
[System.ServiceModel.OperationContract]
System.Collections.Generic.List<BusinessObjects.Customer>
GetCustomers(byte numberOf, bool valid);
执行该方法后:
public virtual System.Collections.Generic.List<BusinessObjects.Customer> GetCustomers(byte numberOf, bool valid) {
return this.BL.GetCustomers(byte numberOf, bool valid); //BL = BusinessLogic Instance
}
在我的API中:
[ActionName("GetCustomers")]
[HttpGet]
public System.Collections.Generic.List<BusinessObjects.Customer> GetCustomers(byte numberOf, bool valid) {
return BS.GetCustomers(byte numberOf, bool valid); //BS = BusinessService Instance
}
网络配置文件:
<?xml version="1.0"?>
<configuration>
<appSettings>
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
</appSettings>
<system.web>
<compilation debug="true" targetFramework="4.5.1" />
<httpRuntime targetFramework="4.5.1"/>
</system.web>
<system.serviceModel>
<services>
<service name="WcfService2.Service1">
<endpoint address=""
behaviorConfiguration=""
binding="webHttpBinding"
contract="WcfService2.TestService" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="restBehavior">
<webHttp helpEnabled="true"/>
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<protocolMapping>
<add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"
multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
<directoryBrowse enabled="true"/>
</system.webServer>
</configuration>
答案 0 :(得分:2)
我想对这个问题发表评论,但我必须有50个评论的声誉。
默认情况下,WCF webservices只有SOAP协议。如果要从浏览器调用它,则必须启用RESTful。
答案 1 :(得分:1)
要涵盖我的所有初始评论并将它们转换为一个(希望)有用的答案:我认为您在构建服务时考虑了REST,但默认情况下WCF是SOAP,这会让您的客户感到困惑。
网上有很多关于如何在WCF中启用REST的文章,快速谷歌搜索可以让你快速到达目的地。我已经在评论中分享了这个链接,但如果将来有人需要它,它可能会有用:http://www.codeproject.com/Articles/803409/REST-enabled-WCF-service#10。
长话短说 - REST不是你用WCF直接开箱即用的东西。