Wcf 在http上没有侦听的终结点://
我有一个使用WCF服务的Windows窗体应用程序。我们的应用程序使用我们的一个WCF服务向运行我们的客户机的特定用户发送消息,因此每次向用户发送消息时,都会动态构造回调“http:”字符串。它包括当前用户登录的服务器IP地址和端口(126.221.97.105:701)、用户id(56281)和客户端GUID(7392d27a-e4a0-42e2-89a3-adc332e28934)。因此,一个典型的回调“http:”字符串如下所示:Wcf 在http上没有侦听的终结点://,wcf,.net-4.0,Wcf,.net 4.0,我有一个使用WCF服务的Windows窗体应用程序。我们的应用程序使用我们的一个WCF服务向运行我们的客户机的特定用户发送消息,因此每次向用户发送消息时,都会动态构造回调“http:”字符串。它包括当前用户登录的服务器IP地址和端口(126.221.97.105:701)、用户id(56281)和客户端GUID(7392d27a-e4a0-42e2-89a3-adc332e28934)。因此,一个典型的回调“http:”字符串如下所示: http://xxx.xxx.xx.xxx:701/Cme
http://xxx.xxx.xx.xxx:701/CmesCns/CALLBACK/56281/7392d27a-e4a0-42e2-89a3-adc332e28934
我们在客户端上有一个http名称空间(http://+:701/),组“Everyone”绑定到此名称空间,并检查所有访问权限(GenericAll、GenericeExecute、GenericRead和GenericWrite)。我们使用“http名称空间”来创建名称空间
我们的应用程序已经投入生产(在Windows Server 2003上)几年了,一切正常
我们最近将应用程序转换为在Windows 2008服务器环境中运行。我们每个项目中的“目标框架”都设置为“.NET Framework 4.0”。我们的应用程序在我的Windows7开发者工作站上运行良好。也就是说,我能够从我们的WCF服务接收消息,但当我将应用程序放到Windows 2008服务器上并尝试运行该应用程序时,我收到以下错误消息:
“当时没有端点监听
这可能会接受消息。这通常是由于地址或SOAP操作不正确造成的。有关更多详细信息,请参阅InnerException(如果存在)。”
http命名空间(http://+:701/)存在于我的开发人员工作站和Windows 2008服务器上。组“Everyone”与我的Windows 7 box和Windows 2008服务器上的命名空间绑定,并检查所有访问权限(GenericAll、GenericeExecute、GenericRead和GenericWrite)
我们一直在网上搜索答案,但没有发现任何东西。有人知道为什么这可以在我们的Windows 7工作站上工作,而不能在我们的Windows 2008服务器上工作吗
非常感谢您的帮助!
Kevin当您在IIS中托管WCF服务时,您不会在地址中指定绝对url。您应该使用.svc文件的相对url。基本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应用程序
如果没有帮助,请关注这些链接,希望它会有用
通常,此错误是因为服务器上没有与客户端请求相匹配的端点(地址、服务或身份验证不同)。 然而,在我的情况下,我有完全相同的错误,这不是由于任何这些事情 当我在IIS上启用跟踪并使用SvcTraceViewer.exe(包含在Visual Studio中)查看svclog跟踪时,实际的内部错误是“超出了最大请求长度”。 我的客户通过该服务上传了一张图片。我猜图片太大了 为了启用跟踪,我在配置部分添加了以下内容:
<system.diagnostics>
<sources>
<source name="System.ServiceModel"
switchValue="All"
propagateActivity="true">
<listeners>
<add name="traceListener"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData= "c:\log\Traces.svclog" />
</listeners>
</source>
</sources>
为了解决这个错误,我在web配置中增加了消息请求的长度,错误消失了
为此,我在web.config的system.websection中添加了以下行:
<httpRuntime maxRequestLength="32768" />
然后我在配置部分中添加了这个部分
<system.webServer>
<security>
<requestFiltering>
<requestLimits maxAllowedContentLength="32000000" />
</requestFiltering>
</security>
</system.webServer>
因此,我建议您启用跟踪,然后查看跟踪以了解确切的错误。您可以使用浏览器从2008服务器访问服务URL吗?已解决。感谢您的响应。我们发现Windows 2008服务器防火墙阻止了对端口701的所有请求。我们在服务器上打开了一个端口,问题已解决。开始g在配置文件上花了2个小时试图找出一个服务在本地主机上无法工作的原因,我的大脑快要崩溃了。但你的答案是我需要的线索!服务端地址属性是相对的!+1