【问题标题】:Configure IIS 7.0 to enable webservices in classic mode配置 IIS 7.0 以在经典模式下启用 Web 服务
【发布时间】:2010-02-05 06:24:34
【问题描述】:

在经典模式下在 IIS 7.0 上启用 Web 服务的配置文件设置是什么? 该站点必须位于经典模式应用程序池中,因为报表查看器控制在集成模式下运行时崩溃。但是在经典模式应用程序池中,Web 服务会产生以下错误消息:

请求的内容似乎是 脚本,并且不会由 静态文件处理程序。

•如果您想将此内容作为 静态文件,添加显式 MIME 地图

编辑 - 附加错误消息信息:

  1. HTTP 错误 404.17 - 未找到
  2. 模块:StaticFileModule
  3. 通知:ExecuteRequestHandler
  4. 处理程序:静态文件
  5. 错误代码:0x80070032

注意:此应用程序的特定实例将在共享托管环境中的客户帐户中运行,因此无法/将无法访问 IIS UI。专门求配置文件调整。

【问题讨论】:

  • 这些是 MS Report Viewer 组件,如果是,是哪个版本? 2005 年还是 2008 年?
  • @Kev - 2005 组件。他们只是在非调试模式下吐出一个空白页。不会生成要捕获的服务器错误。但是,如果我使用调试版本的代码附加到服务器,当 RSReport 尝试做它声称 RSReport 为空的事情时,它们就会崩溃。

标签: web-services iis-7 web-config


【解决方案1】:

在 IIS 管理器(开始 -> 运行 -> inetmgr)中,选择要设置为经典模式的网站或虚拟目录。

在右侧面板“操作”中,单击“基本设置”。

在应用程序池旁边(默认为 DefaultAppPool),单击“选择”并将其更改为“Classic .Net AppPool”。

演练是here

更新:抱歉,我误读了您的问题。您可以尝试以下几件事:

首先是从控制面板仔细检查 IIS 安装功能(程序和功能 -> 打开和关闭 Windows 功能 -> Internet 信息服务 -> 万维网服务 -> 应用程序开发功能)。我检查了 CGI 和服务器端包含的所有内容)。

其次,确保您的网站已正确设置为应用程序(选择网站 -> 操作 -> 查看应用程序)。如果它不存在,则需要添加它。

要检查的第三件事特别是处理程序,通过 IIS 管理器访问它 -> 选择网站 -> 处理程序映射 -> 打开功能 -> 确保 .asmx 在那里。我有它3次,WebServiceHandlerFactory-Integrated(处理程序System.Web.Handlers.WebAdminHandler),WebServiceHandlerFactory-ISAPI-2.0(Isapi模块)和WebServiceHandlerFactory-ISAPI-2.0-64(Isapi模块)。

最后,您要确保为该应用程序使用正确的 .NET 版本。

再次为最初的达夫答案道歉。

【讨论】:

  • 嗨,根据问题,服务器已经处于经典模式 - 这就是导致问题的原因。问题不在于如何将 IIS7 置于经典模式,而是需要哪些配置设置才能为已处于经典模式的 IIS 7 服务器启用 Web 服务。
  • 嗨,是的,这绝对是处理程序问题。 Web 服务需要路由到静态文件处理程序之外的其他东西。我不能说我曾经需要手动调整设置,所以我不确定哪个映射到什么。我现在将使用您提供的信息进行另一个修补程序(我已经睡了一些觉)。
【解决方案2】:

感谢君托的帖子!我尝试了很多其他人被建议的东西,但无法让我的网站正常工作。我按照您的说明进行操作,果然,我的应用程序列在 IIS 中的站点下,但未显示在应用程序池中。我删除了应用程序并创建了它们。之后一切都按预期工作。

如果有人对我经历的事情感兴趣。我正在从 IIS6 迁移到 IIS7。所有虚拟目录和应用程序似乎都可以正常移植,但并非所有虚拟目录和应用程序都进入了应用程序池。因此,如果您遇到同样的问题,“错误 400.17。如果您想将此内容作为静态文件提供,请添加显式 MIME 映射”,请检查您的应用程序池以确保显示所有应用程序。

【讨论】:

    【解决方案3】:

    这听起来像你的 HandlerMappings 有点古怪。您可以通过执行以下操作恢复到已知良好的基线(前提是您没有修改服务器范围的处理程序映射):

    1. 打开 IIS 管理器
    2. 打开相关网站
    3. 在站点的功能视图中打开处理程序映射功能
    4. 在“操作”窗格(右上角)中,单击“恢复为父级”

    【讨论】:

    • 是的。当然可以。不幸的是,我无权访问 IIS 管理器。该应用程序将在共享环境中运行。测试服务器 IIS7.0 上的一切都很好,所以我的想法是托管服务器上的 machine.config 文件中的某些内容有所不同,因此我需要在 web.config 中为此应用程序显式设置或覆盖某些内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-02
    • 2020-10-27
    • 1970-01-01
    • 2017-02-08
    • 2011-12-19
    • 1970-01-01
    • 2014-04-23
    相关资源
    最近更新 更多