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

本文关键字:服务 错误 WCF Windows | 更新日期: 2023-09-27 17:50:55

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

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

当我尝试通过Visual studio或使用WCFTestClient添加引用时,我得到以下错误:

错误:Cannot get Metadata fromhttp://localhost/ServiceModelSamples/service如果这是Windows (R)请提供您可以使用的通讯基金会服务检查是否已在指定的位置启用元数据发布地址。有关启用元数据发布的帮助,请参阅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)Not Found。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)通信基础服务,请检查您是否已在指定地址启用了元数据发布。有关启用元数据发布的帮助,请参阅MSDN文档http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: 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

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

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

我假设你有IIS运行在本地主机?这就是为什么错误也说The remote server returned an error: (404) Not Found. IIS服务器正在监听端口80,找不到ServiceModelSamples/service,因此返回404。

我的问题是服务名称没有在服务属性中设置,所以我设置了这个,并确保安装程序服务名称匹配。也将其设置为LocalSystem帐户。不知道这是否有影响但它被设置为NetworkService