【问题标题】:IIS serving static files despite my attempts to stop it尽管我试图阻止它,但 IIS 仍在提供静态文件
【发布时间】:2015-12-10 15:42:42
【问题描述】:

所以,我一直在从事利用 Katana/Owin 管道的项目。我正在尝试使用 Owin 安全地提供静态文件。现在,当我通过 VS 在本地运行项目时,一切正常。

但是,当我将它部署到服务器(Windows Server 2008 R2、IIS 7)时,IIS 决定在它让任何脏托管处理程序管理其静态文件之前,它会被诅咒。即使我删除了静态文件处理程序。即使我为特定路径添加了自己的处理程序。即使我告诉它为所有请求运行所有托管模块。而且由于传入的路径是虚拟路径,IIS 当然会崩溃并死掉,要么吐出 500 或 404 错误。我不完全确定是什么原因导致它在 404 上吐出 500,但只要请求深度超过 1 个目录,它就会在 404 上给出 500。(/Client/Content/Folder/static.html(404) vs /Client/Content/Folder/SubFolder/static.html (500))

我根本不知道从这里去哪里。更糟糕的是,当我部署到本地 IIS 时(不是在 VS 之外运行它),它运行良好。尊重web.config,Owin中间件完美处理静态请求,安全到位。一切都是桃色的。当然,我正在我的机器上运行 IIS 8 express,但我不相信就是这样。

【问题讨论】:

  • 您是否检查了所有 IIS 设置以了解本地版本和服务器之间的差异,例如应用程序池、身份设置等?事件查看器中显示什么错误消息?您是否通过程序和功能安装了所有必需的 asp.net 模块?
  • 无需查看您的 web.config 和/或 IIS 配置,您只需让每位读者猜测即可。

标签: c# iis owin static-files


【解决方案1】:

我将发表我的评论作为答案,因为我想得越多,我就越确定这可能是问题所在。

检查所有必需的 asp.net 和 IIS 功能是否已通过程序和功能正确安装 - 比较您的开发环境和服务器环境。我遇到了和你基本相同的问题,这通常是原因。

如果不是这个原因,请检查 IIS 设置/应用程序池设置,确保它们是在开发和生产环境中。

【讨论】:

  • 所以,我重新安装了 IIS 和 windows server 2012(有点想通过使用 IIS 8 减少本地和服务器之间可能存在的差异)。我已经安装了所有的 .NET 框架等。尽管如此,它仍然没有将请求传递给托管代码。如果我删除静态文件处理程序,它只会抱怨静态文件处理程序。我在 web.config 中标记了 。我已经尝试过各种自定义处理程序,但似乎没有任何效果。
最近更新 更多