WCF .svc可通过HTTP访问但访问WSDL导致“连接被重置”

时间:2010-04-09 11:35:42

标签: .net wcf web-services wsdl

我有一个WCF服务,它在Win2003 SP2机器上的IIS6上托管。 WCF服务正确托管并通过HTTP可见,通常“要测试此服务,您将需要创建一个客户端并使用它来调用服务”消息。但是,访问.svc?WSDL链接会导致重置连接。

服务器本身在WSDL请求的日志中返回200,此处显示了一个示例,第一个调用获得连接重置,第二个调用成功调用.svc文件。

2010-04-09 11:00:21 W3SVC6 MACHINENAME 10.79.42.115 GET /IntegrationService.svc wsdl 80 - 10.75.33.71 HTTP/1.1 Mozilla/4.0+(compatible;+MSIE+7.0;+Windows+NT+5.1;+.NET+CLR+2.0.50727;+.NET+CLR+1.1.4322;+.NET+CLR+1.0.3705;+InfoPath.1;+.NET+CLR+3.0.04506.30;+MS-RTC+LM+8;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729;) - - devsitename.mydevdomain.com 200 0 0 0 696 3827
2010-04-09 11:04:10 W3SVC6 MACHINENAME 10.79.42.115 GET /IntegrationService.svc - 80 - 10.75.33.71 HTTP/1.1 Mozilla/5.0+(Windows;+U;+Windows+NT+5.1;+en-GB;+rv:1.9.1.9)+Gecko/20100315+Firefox/3.5.9+(.NET+CLR+3.5.30729) - - devsitename.mydevdomain.com 200 0 0 3144 457 265

我的Web.Config看起来像:

<system.serviceModel>
    <serviceHostingEnvironment >
        <baseAddressPrefixFilters>
            <add prefix="http://devsitename.mydevdomain.com" />
        </baseAddressPrefixFilters>
    </serviceHostingEnvironment>
    <behaviors>
        <serviceBehaviors>
            <behavior name="My.Service.IntegrationServiceBehavior">
                <serviceMetadata httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service behaviorConfiguration="My.Service.IntegrationServiceBehavior" name="My.Service.IntegrationService">
            <endpoint address="" binding="wsHttpBinding" contract="My.Service.Interfaces.IIntegrationService"  bindingConfiguration="NoSecurityConfig" />
            <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
        </service>
    </services>
    <bindings>
        <wsHttpBinding>
            <binding name="NoSecurityConfig">
                <security mode="None" />
            </binding>                      
        </wsHttpBinding>
    </bindings>
</system.serviceModel>

我对这个很难过。它可以通过VS2008中的本地开发服务器正常工作,但在部署后失败。有关详细信息,目标计算机没有防火墙(它位于内部网络上),日志显示该站点认为200好的响应没问题。我也尝试使用我的服务的完整URL更新端点,但它仍然没有区别。

我已经研究了一些其他选项 - 手动创建单独的WSDL并通过元数据属性公开它(由于维护问题,实际上不希望这样做)。

如果有人可以就此或任何其他变通方法提出任何想法,我们将不胜感激。

编辑 - 决议:谢谢大家的帮助。通过跟踪和逐个接口连接的组合,发现在开发服务器上安装了一个日志应用程序,该应用程序干扰响应并强制在服务器上初始接收后关闭流。这是一个连接重置客户端,但服务器200。为了你的贡献而向全面投票,并向偷偷偷然安装了记录器的开发人员用橡胶软管殴打

3 个答案:

答案 0 :(得分:2)

您是否启用了对Web服务的跟踪?这将为您提供有关WCF正在做什么的详细日志。

尝试按照此MSDN article中“部署或调试的推荐设置”一节中的说明启用对服务的跟踪。

生成跟踪文件后,可以使用SvcTraceViewer.exe(通常位于C:\ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ bin之类)查看它。

答案 1 :(得分:1)

我同意 - 我也很难过。据我所知,你的WCF配置看起来很好。

要尝试的事情:

  • 您可以使用WCF Test Client使用/IntegrationService.svc地址访问您的服务吗?

  • 您可以使用测试客户端使用/IntegrationService.svc/mex地址访问您的服务吗?

  • 如果从配置中删除<serviceHostingEnvironment>部分,
  • 是否可以访问WSDL?

答案 2 :(得分:1)

您可以尝试安装Fiddler并观看HTTP流量吗?也许这会对这个问题有所了解。

在您尝试访问WSDL时,还要检查已部署服务器上的事件日志,以查看它是否有任何错误。