2009-12-09 82 views
0

我有一个Silverlight Web应用程序解决方案,其中包含启用Silverlight的WCF服务。在过去的6个月左右,一切都很顺利。我可以通过服务访问数据,没有任何问题。启用Silverlight的WCF服务端口突然发生变化

我今天开始工作,打开解决方案,再次运行它,突然间,WCF服务端口和Silverlight想用来访问服务的端口之间存在不匹配。

港口如何以及为何突然改变?

如何指定要使用的端口?我从来没有指定过去的港口 - 它只是工作。我无法在web.config或服务CS文件中找到端口规范。

回答

3

听起来就像你在讨论Visual Studio中的解决方案,你可以通过点击Web项目属性来查看默认端口,进入Web选项卡,在“Servers”部分你会看到默认的端口号,你手动分配一个特定的端口或使用自动分配端口。

我曾经见过类似的情况,它发生在端口被使用时。您可以通过更改项目属性中的端口号重新分配端口,重新编译Web解决方案,然后更新客户端项目中的Web服务引用。希望能帮助到你。

+0

这就是它。我知道我曾经见过一个地方设置特定的端口,但直到我发布此问题约30秒后才找到它。显然,我的时机只是一点点关闭。 – Klay 2009-12-10 18:49:17

0

WCF服务是否托管在IIS中?有人更改了一些IIS配置?

在IIS中托管时,* .svc文件的IIS服务器名称,端口,虚拟目录以及名称和位置将定义服务器端的服务地址。如果发生这些变化 - >您的服务将不再可用。

1

您是否使用内置的Cassini网络服务器? WCF Web服务是与托管页面相同的Web项目的一部分吗?或者它是一个单独的项目?

如果您使用Cassini,则在项目属性页面的“Web”选项卡上指定它在开发环境中侦听的端口。通常Visual Studio自动分配一个端口,但是如果你使用这个端口作为你的Web服务,你需要告诉它使用哪个特定的端口(例如51000或者其他)。它可能总是默认到同一个端口,但是如果它检测到这个端口正在使用中(可能是你的机器上的另一个Cassini实例永远不会退出),它会切换端口。

您还应该检查Silverlight项目中的ServiceReferences.ClientConfig文件,以查看它尝试连接的端口。

+0

不知道这是很好的做法,但我因为你的情况描述上投这个答案(由于应用程序的另一个实例没有正确退出,因此该端口正在使用)最有可能发生了什么。这个答案为我接受的答案增加了有用的诊断信息。 – Klay 2009-12-10 18:53:25

+0

指定一个端口还有其他好处,例如,可以编写能够可靠地调用服务而无需更改配置的集成测试。这正是我使用组合的Silverlight/ASP.NET/WCF项目时通常所做的。 – 2009-12-10 19:15:25

0

你可能已经使用端口启动一些其他的软件(Skype公司抓住了我出过去)