无法在Server IE浏览器中查看服务

问题描述 投票:0回答:2

我有一个带有net.tcp和http服务器绑定的WCF服务。

Web.config文件看起来像这样

 <system.web>
    <compilation debug="false" targetFramework="4.0" />
  </system.web>
  <system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="tcp_Unsecured" portSharingEnabled="true">
          <security mode="None" />
        </binding>
      </netTcpBinding>
    </bindings>
    <services>
      <service name="MarketFeedServiceLibrary.Service1">
        <endpoint address="net.tcp://localhost:808/MarketFeedService/Service.svc/mexTcp"
          binding="mexTcpBinding" bindingConfiguration="" name="mexEndPoint"
          contract="IMetadataExchange" />
        <endpoint address="net.tcp://localhost:808/MarketFeedService/Service.svc/tcpService"
          binding="netTcpBinding" bindingConfiguration="tcp_Unsecured"
          name="dataEndPoint" contract="MarketFeedServiceLibrary.IService1" />
        <endpoint address="http://localhost:80/MarketFeedService/Service.svc/basicHttp"
          binding="basicHttpBinding" bindingConfiguration="" name="httpDataEndpoint"
          contract="MarketFeedServiceLibrary.IService1" />
        <endpoint address="http://localhost:80/MarketFeedService/Service.svc/mex"
          binding="mexHttpBinding" bindingConfiguration="" name="httpMexEndpoint"
          contract="MarketFeedServiceLibrary.IService1" />
      </service>
    </services>
    <behaviors>
      <serviceBehaviors>
        <behavior name="">
          <serviceMetadata httpGetEnabled="false" />
          <serviceDebug includeExceptionDetailInFaults="false" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
       />
  </system.serviceModel>
  <system.webServer>
    <modules runAllManagedModulesForAllRequests="true"/>
  </system.webServer>

我已在本地PC的IIS中托管该服务,如果我使用地址"http://localhost/MarketFeedService/Service.svc"在IE浏览,我会获得如下元数据信息

但是,如果我在VPS服务器(Windows Server 2008 IIS 7.5)上的IIS中使用相同的地址托管相同的WCF Web服务,我会收到以下错误,

此外,我可以添加本地托管服务的服务引用,但如果我尝试使用路径“net.tcp://IPAddress/MarketFeedService/Service.svc”添加服务器的服务引用,我会收到以下错误

无法分派消息,因为端点地址'net.tcp://IPAddress/MarketFeedService/Service.svc'上的服务不可用于地址协议。

注:

  1. Net.Tcp端口共享服务,Net.Tcp侦听器适配器已打开
  2. 已安装并启用WCF Http和Non-Http Activation。
  3. 默认网站以及应用程序都启用了http和net.tcp协议。

非常感谢你提前。

wcf iis-7.5 windows-server-2008
2个回答
0
投票

是否在IIS中正确映射了svc文件类型? http://msdn.microsoft.com/en-us/library/vstudio/ms752252(v=vs.90).aspx


0
投票

对于那些可能会或可能不会完全匹配此问题的人来说,只是另一种选择(我无法查看由于防火墙而在工作中发布的快照) -

我遇到了很多问题,特别是RESTful服务在本地工作正常,但在服务器上崩溃和烧毁。我认为这可能是因为配置与根配置或注册表冲突,但事实并非如此。

您必须进入IIS并查看基本站点级别的设置,将有一个名为“ISAPI过滤器”的功能选项。

长话短说,特定的ISAPI过滤器称为UrlScan(版本可能非常,我认为当前的版本是3.1)是我们问题的根源。此过滤器的作用是查找传入请求上的模式,以尝试筛选出潜在的恶意请求。

随着技术的变化和改进,设置不熟悉的请求会被拒绝或重新路由。就我而言,它正在查看文件扩展名。从ASP扩展启动的旧SOAP技术被识别/祝福(.asmx),但我们从未设置RESTful或WCF服务,因此它无法识别“.svc”扩展名。

初始设置通常非常严格,任何http请求都被拒绝或重新路由,并且管理Web服务器的任何人都会调整文件以根据需要提供功能。

您可以转到文件位置,同一目录中的.ini文件包含该工具的设置。

在该文本文件中,查找名为[AllowExtensions]和[DenyExtensions]的部分。确保将.svc添加到“允许”组,并确保它未在拒绝组中明确列出。

Microsoft - HowTo: Use URLScan

© www.soinside.com 2019 - 2024. All rights reserved.