如何测试我的服务?

时间:2015-05-22 08:30:44

标签: c# web-services wcf

这是我的链接: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>

2 个答案:

答案 0 :(得分:2)

我想对这个问题发表评论,但我必须有50个评论的声誉。

默认情况下,WCF webservices只有SOAP协议。如果要从浏览器调用它,则必须启用RESTful。

您可以关注herehere启用RESTful。

答案 1 :(得分:1)

要涵盖我的所有初始评论并将它们转换为一个(希望)有用的答案:我认为您在构建服务时考虑了REST,但默认情况下WCF是SOAP,这会让您的客户感到困惑。

网上有很多关于如何在WCF中启用REST的文章,快速谷歌搜索可以让你快速到达目的地。我已经在评论中分享了这个链接,但如果将来有人需要它,它可能会有用:http://www.codeproject.com/Articles/803409/REST-enabled-WCF-service#10

长话短说 - REST不是你用WCF直接开箱即用的东西。