我正在尝试通过Anthony Steele在this blog post上重新创建项目来学习如何使用WCF构建RESTful服务。他在配置中使用以下XML来设置服务的端点。
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/greeter"/>
</baseAddresses>
</host>
但是,当我尝试在ASP.NET 3.5网站的web.config中执行相同的操作时,我无法导航到我的服务。这是我正在使用的XML:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="GreeterBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service behaviorConfiguration="GreeterBehavior" name="Greeter">
<host>
<baseAddresses>
<add baseAddress="http://localhost:49268/TestREST/webapi/services/greeter"/>
</baseAddresses>
</host>
<endpoint address="" binding="wsHttpBinding" contract="IGreeter">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
</system.serviceModel>
我想我的配置可以让我导航到http://localhost:49268/TestREST/webapi/services/greeter并查看我的服务。我得到的只是资源未找到的消息 - 我错过了什么吗?
编辑:我的部分问题是我的绑定是wsHttpBinding。使用webHttpBinding允许我正确使用服务 - 除了baseAddress配置部分仍然无效。
答案 0 :(得分:4)
我的预感是服务端点未成功创建。
在服务“名称”属性中,您不包括服务类型的FQN(完全限定名称)。其次,在端点“合同”属性中,您也不包括FQN到合同类型。
另一方面,这可能是一个端口问题。为了确保这一点,请尝试运行Visual Studio 2008发行版中包含的WcfTestClient.exe。如果您可以连接到http://localhost:49268/TestREST/webapi/services/greeter/mex,那么您知道它不是端口问题。
假设您可以通过MEX连接,然后尝试运用一些方法,这些方法可能会映射到http://localhost:49268/TestREST/webapi/services/greeter。
如果您在服务器上运行,请在此处查看有关HttpCfg.exe的一些有价值的详细信息: WCF ServiceHost basicHttpBinding 503 error
如果您需要有关WcfTestClient的更多详细信息,请在此处查找: Is it possible to make the WcfTestClient work for custom transport channels?
以防万一:逐字复制样本并验证它是否按规定运行,包括配置文件,然后再稍微偏离它。