对于使用WCF的3层客户端/服务器应用程序,我有一个非常奇怪的问题。
首先,我有一个服务窗口,它在basicHttpBinding中托管WCF服务。这是服务器app.config:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<services>
<service name="Business.BSServiceManagement" behaviorConfiguration="myServiceBehave">
<host>
<baseAddresses>
<add baseAddress="http://localhost:35001"/>
</baseAddresses>
</host>
<endpoint address="/Clients" binding="basicHttpBinding" name="Clients" contract="Contracts.BusinessFacade.IBFClientManagement"/>
<endpoint address="/Users" binding="basicHttpBinding" name="Users" contract="Contracts.BusinessFacade.IBFUserManagement"/>
<endpoint address="/Licences" binding="basicHttpBinding" name="Licences" contract="Contracts.BusinessFacade.IBFLicenceManagement"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="myServiceBehave">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
此服务部署在DMZ的服务器上,我可以从我的计算机访问(在firefox中,如果我将服务地址与端口号一起使用)
其次,我有一个使用winforms制作的客户端应用程序,它使用ChannelFactory服务。
这是客户端app.config:
<?xml version="1.0"?>
<configuration>
<system.serviceModel>
<client>
<endpoint address="http://192.168.128.1:35001/Clients" binding="basicHttpBinding" name="Clients" contract="Contracts.BusinessFacade.IBFClientManagement"/>
<endpoint address="http://192.168.128.1:35001/Users" binding="basicHttpBinding" name="Users" contract="Contracts.BusinessFacade.IBFUserManagement"/>
<endpoint address="http://192.168.128.1:35001/Licences" binding="basicHttpBinding" name="Licences" contract="Contracts.BusinessFacade.IBFLicenceManagement"/>
</client>
</system.serviceModel>
</configuration>
当我调试客户端应用程序时,一切都很完美。所以我做了一个安装程序项目来在几台计算机上部署应用程序,但是当我执行应用程序的exe(安装或直接在bin / release中)时,我有一条错误消息:
There was no endpoint listening at http://192.168.128.1:35001/Users...
内部例外说:
无法连接到远程服务器
我尝试添加mex端点,更改端口号,检查服务器和客户端计算机防火墙,我不明白问题出在哪里。
感谢您的帮助。
编辑1:
经过多次测试后,我在release exe中遇到了同样的问题,但在调试exe中没有。
如果我执行调试exe,则一切正常,但release exe会返回错误消息。
答案 0 :(得分:0)
问题在于您的服务。
确保服务已启动并正在运行。
启动服务后,浏览URL(例如:localhost:8080 / example),以确保服务正常运行。
将Service Reference添加到客户端应用程序时,它会自动在app.config文件中生成端点。
将Installer添加到客户端项目时,请确保它是成功构建的。
当你安装它时,它应该适合你。