Windows服务中托管的WCF服务上的404错误

时间:2015-05-28 09:24:45

标签: c# wcf windows-services

我正在尝试创建一个在Windows服务中托管的WCF服务,我在部署到服务器之前在本地进行测试。

创建并安装了服务,我可以正常运行该服务。

当我尝试通过Visual Studio或使用WCFTestClient添加引用时,我收到以下错误。

  

错误:无法从中获取元数据   http://localhost/ServiceModelSamples/service如果这是Windows(R)   请访问您的Communication Foundation服务   检查您是否已在指定的位置启用元数据发布   地址。有关启用元数据发布的帮助,请参阅   MSDN文档在   http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata交流   错误URI:http://localhost/ServiceModelSamples/service元数据   包含无法解析的引用:'   http://localhost/ServiceModelSamples/service”。没有端点   听http://localhost/ServiceModelSamples/service那可能   接受消息。这通常是由不正确的地址或   SOAP动作。有关更多详细信息,请参阅InnerException(如果存在)。该   远程服务器返回错误:(404)未找到。 HTTP GET错误
  URI:http://localhost/ServiceModelSamples/service有一个   下载“http://localhost/ServiceModelSamples/service”时出错。
  请求失败,HTTP状态为404:Not Found。

这是我的app.config

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<services>
  <service behaviorConfiguration="CalculatorServiceBehavior" name="Microsoft.ServiceModel.Samples.CalculatorService">
    <endpoint address="" binding="basicHttpBinding" contract="Microsoft.ServiceModel.Samples.ICalculator" />
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />        
    <host>
      <baseAddresses>
        <add baseAddress="http://localhost:8000/ServiceModelSamples/service" />
      </baseAddresses>
    </host>
  </service>
</services>
<bindings>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior name="CalculatorServiceBehavior">
      <serviceMetadata httpGetEnabled="true" />
      <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>        
  </serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>

正如您可以看到它对msdn上的教程略有修改,用于在Windows服务中托管WCF服务。

我已尝试重新预订,但未发现很多或大部分问题似乎与IIS托管相关。

更新

按照venerik的建议添加端口号后,错误现已更改为以下内容。

  

错误:无法从http://localhost:8000/ServiceModelSamples/service获取元数据如果这是您有权访问的Windows(R)Communication Foundation服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange错误URI上的MSDN文档:http://localhost:8000/ServiceModelSamples/service元数据包含无法解析的引用:“http://localhost:8000/ServiceModelSamples/service”。在http://localhost:8000/ServiceModelSamples/service没有可以接受该消息的端点监听。这通常是由错误的地址或SOAP操作引起的。有关更多详细信息,请参阅InnerException(如果存在)。无法连接到远程服务器无法建立连接,因为目标计算机主动拒绝它127.0.0.1:8000HTTP GET错误URI:http://localhost:8000/ServiceModelSamples/service下载“http://localhost:8000/ServiceModelSamples/service”时出错。无法连接到远程服务器无法建立连接,因为目标计算机主动拒绝它127.0.0.1:8000

2 个答案:

答案 0 :(得分:0)

您应该将您的客户端(如WcfTestClient)连接到http://localhost:8000/ServiceModelSamples/service。该错误表示您尝试连接到没有端口的http://localhost/ServiceModelSamples/service,即。

我假设您在localhost上运行IIS?这就是为什么错误也说The remote server returned an error: (404) Not Found. IIS服务器正在端口80侦听而无法找到ServiceModelSamples/service因此返回404。

答案 1 :(得分:0)

我遇到的问题是未在服务属性中设置服务名称,因此我设置了此名称并确保安装程序服务名称匹配。 同时将其设置为LocalSystem帐户。不确定是否有任何影响,但设置为NetworkService