我知道这是一个常见问题解答,并且我已经阅读了所有类似的 Q 和 A,但我仍然不正确。
一般来说,我是 Web 服务和 ASP.NET 的新手。我有一个由同事编写的小型 WCF 服务应用程序,该应用程序可以在他的电脑上运行并进行演示。在我的电脑上,没有任何更改,当将其添加为服务时,我无法让它被 WCF 测试客户端程序接受(下面的错误消息)。我的同事现在请假!
项目属性设置为开始WcfTestClient.exe
使用具有自动分配端口号的 VS 开发服务器。该项目添加了服务所需的一个webform.aspx
和一个文件。Global.asax
我跑了
netsh http add urlacl url=http://localhost:51568/Service1.svc user=<loginname>
我的问题是如何让 WcfTestClient 启动服务以及浏览器上的网络表单?
我已经查看了类似问题的各种 SO 答案,但仍然感到困惑。
添加服务失败。服务元数据可能无法访问。确保您的服务正在运行并公开元数据。错误:无法从中获取元数据
http://localhost:51568/Service1.svc
如果这是您有权访问的 Windows (R) Communication Foundation 服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅...错误 URI:http://localhost:51568/Service1.svc
元数据包含无法解析的引用:“http://localhost:51568/Service1.svc
”。没有端点监听http://localhost:51568/Service1.svc
可以接受该消息。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。无法连接到远程服务器 由于目标计算机主动拒绝它,无法建立连接 127.0.0.1:51568HTTP GET 错误 URI:http://localhost:51568/Service1.svc
下载“http://localhost:51568/Service1.svc
”时出错。无法连接到远程服务器 由于目标机器主动拒绝,无法建立连接 127.0.0.1:51568
这是我的 web.config:
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<services>
<service name="Service1" behaviorConfiguration="DefaultBehavior">
<endpoint address="http://localhost:*/Service1" binding="basicHttpBinding" contract="IService1" />
<endpoint address="http://localhost:*/Service1/mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true"/>
</system.webServer>
关于端口号让我感到奇怪的是,如果我没有将项目设置为从外部程序开始,那么浏览器会在 localhost 端口 50345 列出目录列表,这是与 51568 不同的端口号。