.net - 将 WCF .NET 3.5 发布到 IIS 6 (Windows Server 2003)

标签 .net wcf iis-7 iis-6

我一直在使用 .NET 3.5 和 IIS7 开发 WCF Web 服务,它在我的本地计算机上完美运行。我尝试将其发布到运行 IIS 6 的服务器,尽管我可以在浏览器中查看 WSDL,但客户端应用程序似乎无法正确连接到它。我启动了一个数据包嗅探应用程序(Charles Proxy),第一条消息的响应返回到客户端为空(0 字节)。第一条消息之后的每条消息都会超时。

WCF 服务是使用 ASP .NET 3.5 的大型应用程序的一部分。该应用程序已经在 IIS 6 上正常工作了一段时间,因此我认为它是 WCF 特有的。我还尝试在 SVC 文件中抛出一个异常,看看它是否做到了这一点,并且该异常从未被抛出,所以我有一种感觉,这是一些较低级别的东西不起作用。

有什么想法吗?我需要在 IIS5 服务器上安装什么东西吗?如果是这样,我如何仍然能够在浏览器中查看 WSDL?

使用 basicHttpBinding 通过 SVC 文件使用该服务

这是 Web.Config 的主要内容(如果您需要它的任何其他部分,请告诉我):

<system.net>
  <defaultProxy>
    <proxy usesystemdefault="False" proxyaddress="http://127.0.0.1:80" bypassonlocal="True"/>
  </defaultProxy>
</system.net>

...

<system.serviceModel>
  <services>
    <service name="Nexternal.Service.XMLTools.VNService" behaviorConfiguration="VNServiceBehavior">
      <!--The first endpoint would be picked up from the confirg
      this shows how the config can be overriden with the service host-->
      <endpoint address="" binding="basicHttpBinding" contract="Nexternal.Service.XMLTools.IVNService" />
      <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" name="mexHttpBinding" />
    </service>
  </services>
  <behaviors>
    <serviceBehaviors>
      <behavior name="VNServiceBehavior">
        <serviceMetadata httpGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="true" />
      </behavior>
    </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>

最佳答案

我一直在 IIS 5.1 和 6 中托管 WCF 服务。除了在服务器上安装 .Net 3.0+ 之外,没有什么特别的,我根据上面的 ASP.NET 3.5 评论看到您已经安装了 .Net 3.0+。

您是否将服务托管在 .svc 文件中?如果您能提供一些额外的信息,我相信这个问题可以很快得到解决。您如何托管 WCF 服务?您的配置文件中的端点/行为是什么样的?您使用什么类型的绑定(bind)?请记住,您只能在 IIS 6 及更低版本中托管 http 绑定(bind)。使用 IIS 7 允许您使用 WAS,它允许您对服务使用非 http 绑定(bind)。

考虑到您可以看到您的 wsdl,我想说您的 MEX 端点正在工作,但您的其他端点没有工作。

关于.net - 将 WCF .NET 3.5 发布到 IIS 6 (Windows Server 2003),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2998925/

相关文章:

.net - XmlDocument 混合内容 pretty-print 行为背后的基本原理是什么?

c# - ConcurrentDictionary 陷阱 - 来自 GetOrAdd 和 AddOrUpdate 的委托(delegate)工厂是否同步?

wcf - 在 WCF 应用程序中设置 MSMQ 以确保可靠的邮件传递

.net - 是否有插入具有多个级联值的 .NET Blazor 组件的简写?

c# - 为 .NET 应用程序创建交互式 shell,并将 python/iron python 等脚本语言嵌入其中

wcf - 如何使用 SvcUtil.exe 在不覆盖服务配置名称的情况下设置命名空间?

wcf - 在 Windows Phone 7 上使用基于 SSL 的基本身份验证

asp.net - 如何在IIS7中为ASP.NET创建虚拟目录?

asp.net-mvc - 为什么 "requireSSL=' true'"抛出 IIS 错误

asp.net - 在 IIS7 中配置 ASP.NET