简单的WCF服务-所有请求返回空

本文关键字:请求 返回 -所 WCF 服务 简单 | 更新日期: 2023-09-27 18:17:38

我目前无法测试应用WebGet属性的简单WCF服务,按照http://msdn.microsoft.com/en-us/library/bb412178.aspx

的教程

我创建了一个空白ASP。. NET web应用程序项目,然后我添加了一个名为"test"的WCF服务,它创建了test.svcItest.svc

然后我添加了方法'hello':

public class test : Itest
{
    public string hello(string s){return "hello " + s;}
}

实现接口:

[ServiceContract]
public interface Itest
{
    [OperationContract]
    [WebGet]
    string hello(string s);
}

然而,任何对http://localhost/test.svc/hello?s=hi的请求(HTTP get)返回一个空页面。事实上,在该url下的任何请求都返回一个空白页面(即http://localhost/test.svc/abcdefg)

我错过了什么基本的东西吗?

编辑:网络。配置完全标准,除了visual studio生成:

<system.serviceModel>
    <bindings>
      <basicHttpBinding>
        <binding name="BasicHttpBinding_Itest" />
      </basicHttpBinding>
    </bindings>
    <client>
      <endpoint address="http://localhost/test.svc" binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_Itest" contract="ServiceReference1.Itest"
        name="BasicHttpBinding_Itest" />
    </client>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

简单的WCF服务-所有请求返回空

你应该使用webHttpBinding来代替basicHttpBinding下面是部分答案:在浏览器中测试wcf服务

这取决于你有什么类型的WCF服务:

如果你使用的是WCF REST服务(webHttpBinding),那么你应该能够导航到服务地址,例如http://yourserver/somedir/service.svc

如果您正在使用其他任何东西,那么您有一个SOAP服务,并且您无法在web浏览器中测试SOAP服务—浏览器只是不理解和说SOAP。但是,在您的C:'驱动器中有一个WCF测试客户端应用程序,您可以为此目的使用。

从我自己可以添加WCFTestCLient在这里:"C:'Program Files (x86)'Microsoft Visual Studio 10.0'Common7'IDE' WCFTestCLient .exe"

尝试在web中替换上述部分。使用下面的配置:

    <system.serviceModel>    
    <services>
      <service name="ServiceReference1.test">
      <endpoint binding="webHttpBinding" contract="ServiceReference1.Itest" behaviorConfiguration="web"/>
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="true" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
      <endpointBehaviors>
        <behavior name="web">
          <webHttp/>
        </behavior>
      </endpointBehaviors>
    </behaviors>
    <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>

你的服务器需要在你的web中有services元素而不是client元素。如上所示配置。同样,要使用webGet,你需要使用webHttpBinding

http://www.west-wind.com/weblog/posts/2008/Apr/10/WCF-REST-Configuration-for-ASPNET-AJAX-and-plain-REST-Services