【问题标题】:There was no endpoint listening at http://在 http:// 没有端点监听
【发布时间】:2014-04-05 01:17:07
【问题描述】:

我有一个使用 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、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 服务器上工作吗?

非常感谢任何帮助! 凯文

【问题讨论】:

  • 2008服务器可以用浏览器访问服务URL吗?

标签: wcf .net-4.0


【解决方案1】:

当您在 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 应用程序。

如果没有帮助,请点击这些链接,希望对您有用。

Stack overflow link

Multiple Endpoint

【讨论】:

  • 已解决。谢谢您的答复。我们发现我们的 Windows 2008 服务器防火墙阻止了对端口 701 的所有请求。我们在服务器上打开了一个端口,我们的问题得到了解决。
  • 盯着配置文件 2 小时试图弄清楚为什么一项服务无法在 localhost 上运行,我的大脑快要炸了。但你的答案是我需要的线索!服务端地址属性是相对的! +1
【解决方案2】:

通常,此错误是因为服务器上没有与客户端请求匹配的端点(地址、服务或身份验证不同)。 但是,就我而言,我遇到了完全相同的错误,这不是由于任何这些原因造成的。

当我在 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 config 中增加了消息请求长度并且错误消失了。

为此,我在 web.config 的 system.web 部分中添加了以下行:

<httpRuntime maxRequestLength="32768" />

然后我在配置部分中添加了这个部分

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-05
    • 2014-06-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多