【发布时间】:2015-08-10 17:12:35
【问题描述】:
我正在尝试创建一个托管在 Windows 服务中的 WCF 服务,并且在部署到服务器之前我正在本地进行测试。
创建并安装服务正常,我可以正常运行服务。
当我尝试通过 Visual Studio 或使用 WCFTestClient 添加引用时,出现以下错误。
错误:无法从 http://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)未找到。 HTTP GET 错误
URI:http://localhost/ServiceModelSamples/service 有一个 下载“http://localhost/ServiceModelSamples/service”时出错。
请求失败,HTTP 状态为 404:未找到。
这是我的 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:http://localhost:8000/ServiceModelSamples/service 元数据包含无法解析的引用的 MSDN 文档:“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
【问题讨论】:
-
添加引用时你的路径应该是
http://localhost/ServiceModelSamples/service.svc。 -
@MairajAhmad 刚试过,还是报错
-
你的班级的名字是什么。我猜是
CalculatorService,如果这是名字而不是地址应该是http://localhost/ServiceModelSamples/CalculatorService.svc -
@MairajAhmad 类名是 CalculatorWindowsService,尝试将 /service 替换为 /CalculatorWindowsService 仍然会产生错误
-
确定通过右键单击 svc 文件浏览服务,然后单击浏览并使用该路径。
标签: c# wcf windows-services