2012-10-17 47 views
2

上监听我有一个使用WCF服务的Windows窗体应用程序。我们的应用程序使用我们的WCF服务之一向运行我们客户端的特定用户发送消息,因此每次向用户发送消息时,我们都会动态构建回调“http:”字符串。它包括当前用户登录的服务器IP地址和端口(126.221.97.105:701),用户的ID(56281)和客户端GUID(7392d27a-e4a0-42e2-89a3-adc332e28934)。因此,一个典型的回调“HTTP:”字符串如下所示:没有端点在http://

http://xxx.xxx.xx.xxx:701/CmesCns/CALLBACK/56281/7392d27a-e4a0-42e2-89a3-adc332e28934 

我们有一个HTTP命名空间(HTTP:// +:701 /)我们的客户和“所有人”组上是依赖于这个命名空间并检查所有访问权限(GenericAll,GenericExecute,GenericRead和GenericWrite)。我们使用“http命名空间”来创建我们的命名空间。

我们的应用程序已经在生产(在Windows Server 2003上)几年,一切正常。

我们最近将我们的应用程序转换为在Windows 2008服务器环境中运行。我们每个项目中的“目标框架”都设置为“.NET Framework 4.0”。我们的应用程序在我的Windows 7开发人员工作站上正常工作也就是说,我能够从我们的WCF服务接收消息,但是当我将我们的应用程序放到我们的Windows 2008服务器上并尝试运行该应用程序时,我收到以下错误消息:

“没有端点侦听。在http://xxx.xxx.xx.xxx:701/CmesCns/CALLBACK/56281/7392d27a-e4a0-42e2-89a3-adc332e28934 可能接受该消息这通常是由不正确的地址或SOAP作用引起见的InnerException,如果存在的话,对于更多细节“

在HTTP命名空间(HTTP:// +:701 /)。存在在我的开发人员工作站和Windows 2008服务器上,“Everyone”组与我的Windows 7盒子和Windows 2008服务器上的名称空间绑定,并检查所有访问权限(GenericAll,GenericExecute,GenericRead和GenericWrite) 。

我们一直在网上寻找答案,但还没有发现任何东西。有人会对我们为什么在Windows 7工作站上运行,而不是在Windows 2008服务器上有什么想法吗?

任何帮助,非常感谢! Kevin

+0

您可以通过2008服务器的浏览器访问服务URL吗? – lockstock

回答

1

当您在IIS中托管WCF服务时,您不会在地址中指定绝对URL。您应该使用.svc文件的相对URL。基础网址将由其托管的网站决定。

<service name="WebService.Receptor"> 
<endpoint 
    address="/WS.svc" 
    binding="wsHttpBinding" 
    contract="IMyContract" 
/> 

,并在客户端上,这取决于你的IIS的配置很显然你应该指定完整地址:

<client> 
<endpoint 
    name="Receptor" 
    address="http://MyServer:8000/WS.svc" 
    binding="wsHttpBinding" 
    contract="IMyContract" 
/> 

这假定你已经配置了网站在IIS中侦听8000端口并且您已经在本站点内托管了您的WCF应用程序。

如果它没有帮助,请按照这些链接,希望它会有用。

Stack overflow link

Multiple Endpoint

+0

已解决。感谢您的答复。我们发现我们的Windows 2008服务器防火墙阻止了对端口701的所有请求。我们在服务器上打开了一个端口,问题解决了。 – Kevin

+0

盯着配置文件2个小时,试图找出为什么一个服务不会工作本地主机,我的大脑即将炒。但你的回答是我需要的线索!服务端地址属性是相对的! +1 – dblood

1

通常情况下,这个错误是因为有相匹配的客户端请求的内容(地址,服务,或认证是不同的)服务器上没有终点。 然而,就我而言,我有完全相同的错误,并不是由于这些事情。

当我在IIS上启用跟踪并使用SvcTraceViewer.exe(包含在Visual Studio中)查看svclog跟踪时,实际的内部错误为“超出了最大请求长度”。

我的客户正在通过服务上传图片。我猜这个图像太大了。

启用跟踪我已将此添加到配置部分:

​​

为了解决该错误,我在web配置增加了消息请求长度和错误走了。

要做到这一点,在web.config中system.websection我添加了一行:

<httpRuntime maxRequestLength="32768" /> 

然后我说这部分的配置部分中

<system.webServer> 
<security> 
    <requestFiltering> 
    <requestLimits maxAllowedContentLength="32000000" /> 
    </requestFiltering> 
</security> 
</system.webServer> 

因此,我建议你启用跟踪,然后查看跟踪确切的错误。