Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wcf 在http上没有侦听的终结点://_Wcf_.net 4.0 - Fatal编程技术网

Wcf 在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

我有一个使用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/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