WCF服务寄宿问题

gagexgy 2012-05-17 03:28:56
最近工作中需要用WCF开发一个小的分布式系统,服务器端采用WinForm开发,并提供WCF服务,客户端为网络上的计算机,调用服务器端的WCF服务。
自己在一台电脑上写了小例子,就是将服务寄宿到WinForm的进程中,然后在本机又写了一个应用程序,调用该服务,表示毫无压力,一切运行良好。
然而现在,当我将服务器和客户端分别放在两个不同的计算机上时,就根本无法工作。是不是如果需要在网络上访问WCF服务,就必须把服务寄宿到IIS上?如果想把服务寄宿到服务器上的一个应用程序上,并且又想在网络上的计算机调用这个服务,应该如何去做啊?
谢谢各位的解答!
...全文
252 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复

本地DNS会将localhost或::1(Vista+)解析成就是127.0.0.1,改来改去还都一样

endpoint列表里没有可以接受消息的endpoint,远程服务器拒绝访问!!!
还是连接的问题,试下改成局域网IP,如果是外网访问,让路由器将请求映射过去
gagexgy 2012-05-18
  • 打赏
  • 举报
回复
多谢回复!
我之前用回送地址是在本机进行测试的,现在我把地址改为了
“Http://localhost/urldispatchservices”
现在可以在外网上通过浏览器通过IP地址来访问这个服务的metadata,然而在VS2010里边添加服务引用却依然添加不进去
提示错误
The document was understood, but it could not be processed.
- The WSDL document contains links that could not be resolved.
- There was an error downloading 'http://localhost/urldispatchservices/metadata?xsd=xsd0'.
- Unable to connect to the remote server
- No connection could be made because the target machine actively refused it 127.0.0.1:80
Metadata contains a reference that cannot be resolved: 'http://xxx.xxx.xxx.xxx/urldispatchservices/metadata'.
There was no endpoint listening at http://xxx.xxx.xxx.xxx/urldispatchservices/metadata that could accept the message. This is often caused by an incorrect address or SOAP action. See InnerException, if present, for more details.
The remote server returned an error: (404) Not Found.
如果该服务已在当前解决方案中定义,请尝试生成该解决方案,然后再次添加服务引用。

[Quote=引用 3 楼 的回复:]
取决于通讯协议,得先保证socket可以连接
LZ你不知道127.0.0.1这个是回送地址吗?
如果是在外网访问,要映射一下地址
[/Quote]
gagexgy 2012-05-18
  • 打赏
  • 举报
回复
谢谢你,我把"localhost"改成服务器的公网IP地址,问题就解决了~很感谢~
[Quote=引用 5 楼 的回复:]
本地DNS会将localhost或::1(Vista+)解析成就是127.0.0.1,改来改去还都一样

endpoint列表里没有可以接受消息的endpoint,远程服务器拒绝访问!!!
还是连接的问题,试下改成局域网IP,如果是外网访问,让路由器将请求映射过去
[/Quote]
  • 打赏
  • 举报
回复
取决于通讯协议,得先保证socket可以连接
LZ你不知道127.0.0.1这个是回送地址吗?
如果是在外网访问,要映射一下地址
gagexgy 2012-05-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

WCF服务是不需要IIS的,
你客户端调用的时候更新一下服务看看是不是调用目录不对。
[/Quote]

谢谢你的回复!
如果不是非要寄宿在IIS上的话,那我问题就可以变为如何调用寄宿在应用程序上的服务了。因为我在一台计算机上的时候,服务是按照如下的方式启动的:

Host = new ServiceHost(typeof(UrlCompareServices));

Host.AddServiceEndpoint(typeof(IUrlAggregator), new WSHttpBinding(),
"http://127.0.0.1:9999/urldispatchservices");

if (Host.Description.Behaviors.Find<ServiceMetadataBehavior>() == null)
{
ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
behavior.HttpGetEnabled = true;
behavior.HttpGetUrl = new Uri("http://127.0.0.1:9999/urldispatchservices/metadata");
Host.Description.Behaviors.Add(behavior);
}

Host.Open();

如果在此时直接在另外一台机器上去调用肯定不行,毕竟我的地址就只适合单机的情况,请问如果我想在不同电脑上调用的话,我的服务的EndPoint是配置如何进行更改才可以啊?谢谢你!
山之魂2 2012-05-17
  • 打赏
  • 举报
回复
WCF服务是不需要IIS的,
你客户端调用的时候更新一下服务看看是不是调用目录不对。

17,740

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 .NET Framework
社区管理员
  • .NET Framework社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧