2

我有一个自定义 IHttpHandler,在 web.config 中指定如下:

<httpHandlers>
  <add verb="*" path="*.html" validate="true" type="PipingRedirectHandler" />
  <add verb="*" path="*.htm" validate="true" type="PipingRedirectHandler" />
</httpHandlers>

在 IIS 7(在 Win 2008 R22 上)中,我添加了带有 Path:*.html/*.htm和 executable:的处理程序映射%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll

我还有一个虚拟目录映射到另一台机器上的 Windows 共享,别名:ClientFiles,物理路径:\\othermachine\ClientFiles。我将此虚拟目录设置为“连接为”域用户,该用户对共享具有完全控制访问权限(读取、写入、执行等),但有关网站、应用程序池标识、连接到物理路径的所有其他内容网站的其余部分等都是默认的(ApplicationPoolIdentity)。

我的 IHttpHandler 可以很好地处理网站上的任何本地 html 文件,并且我在 ClientFiles 虚拟目录上的所有 css 和图像也可以完美地工作。唯一的问题是当我试图从虚拟目录中读取 html 文件时。HTTP 401 Unauthorized尝试这样做时出现错误。

我认为这是本地 ASP.Net ISAPI 试图直接加载文件而不尊重虚拟目录的“连接为”设置,所以我将应用程序池的身份更改为具有访问权限的同一个域用户,以及所有内容似乎工作。

我是在想:

  • 这是正常的吗?
  • 为什么不使用虚拟目录设置中指定的用户?
  • 我是否以适当的方式解决了这个问题?

我相信通过将应用程序池设置为使用域用户会稍微降低安全性,并且不希望这样做。

4

0 回答 0