如何允许web.config文件作为普通文件,并允许在虚拟目录中下载IIS

时间:2015-01-16 11:34:54

标签: iis iis-7 iis-7.5

我正在开发一款Unity 3D游戏,该游戏在为Windows构建时会生成game.exe和game_Data文件和文件夹。 Game_Data文件夹包含一个名为** Game_Data \ Mono \ etc \ mono \ 2.0 **。

的目录

目录文件显示在图像中。

Mono 2.o Dir structure

浏览器目录包含一个名为 Compact.browser的文件。

当前情景。 1.这些游戏文件托管在运行IIS 7.5的服务器上。 游戏资源文件在游戏网站的虚拟目录中提供。

  1. 我对网站的根web.config文件进行了一些更改,因此只允许在服务器上的游戏资源文件夹中下载所有文件类型。

  2. 是的,包括.html,.aspx,.xml,.config,.browser,.map等在内的所有文件类型都作为普通文件下载。

  3. 问题

    1. 在您看到目录结构时,游戏资源文件夹中有一个web.config文件。该文件与网站配置无关,但与游戏有关(下载后在客户端)。

    2. 由于文件作为单个文件提供,因此每个文件都是单独下载的。因此,当客户端尝试下载包括上述文件夹内容的所有文件时。

    3. 由于此web.config文件,目录的内容未下载。如果我删除此web.config文件,则会下载所有.aspx,.config,.map文件。还有一些其他文件夹可以正确下载许多不同的文件。

    4. 但是这个web.config文件也是游戏所必需的,并且它不允许在上面显示的目录中与其他文件一起下载

    5. 我试图调查解决方案。找到一些提示以避免嵌套配置文件中的继承。但实际上我想将此文件完全视为普通文件,而不是网站配置文件。

      我认为你遇到了我的问题。请让我知道你的建议。你可以说添加Mime类型。但是实际上所有的文件类型都在下载,包括.config文件。除了名为web.config的文件。

1 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,我认为我找到了解决方案的一半:有一种方法可以告诉IIS不要解释web.config文件。

要执行此操作,请修改C:\Windows\System32\inetsrv\config\applicationHost.config文件(我还没有找到在IIS用户界面中执行此操作的方法),为相关allowSubDirConfig="false"指定<virtualDirectory>元素:

<configuration>
  <system.applicationHost>
    <!-- ... -->
    <sites>
      <site name="Default Web Site" id="1">
        <application path="/">
          <virtualDirectory path="/" physicalPath="%SystemDrive%\inetpub\wwwroot" />
          <virtualDirectory path="/Staging" physicalPath="C:\inetpub\wwwroot\Staging" allowSubDirConfig="false" />
        </application>
    <bindings> <!-- ... --> </bindings>
  </site>

有关详细信息,请参阅http://www.iis.net/configreference/system.applicationhost/sites/site/application/virtualdirectory

问题是,它仍然不会让你下载web.config文件,它会一直返回404 - Not found,即使在删除所有处理程序之后也是如此。

您是否曾设法找到解决方案?

修改 - 找到解决方案。简短的回答是,在您的web.config中,您应该清除fileExtensionshiddenSegments列表:

<system.webServer>
  <security>
    <requestFiltering>
      <hiddenSegments>
        <clear />
      </hiddenSegments>
      <fileExtensions>
        <clear />
      </fileExtensions>
    </requestFiltering>
  </security>

我写了blog article about it来解释所有细节。