1

我已经在我的计算机上安装了 ServerSideIncludes 模块,它运行良好,但有一个例外。

<!--#include virtual="meta.inc" -->

上面的行导致了问题。我知道我必须更改virtualfile但我有一个巨大的网站,这意味着我必须更改至少 1000 行这样的代码,我正在寻找一种virtual在 IIS 7 中正常运行的方法。

我一直在寻找这个解决方案,但我已经能够找到我上面提到的解决方案。

你知道如何在不改变virtualto的情况下解决这个问题吗file

谢谢。

4

3 回答 3

1

您是否在您的网站上启用了父路径?在 IIS 中导航到站点的“ASP”部分,然后在“行为”部分中选择“启用父路径”,看看是否有帮助。

Parent Paths 选项允许您在调用 MapPath 等函数时使用“..”,方法是允许使用 ..\notation 相对于当前目录的路径。将此属性设置为 True 可能会构成安全风险,因为包含路径可以访问应用程序根目录之外的关键或机密文件。

于 2009-12-01T19:24:49.963 回答
0

SSI 不是 ASP——它们是不同的技术。

我发现每次微软发布他们任何产品的新版本时,有时在以前版本中工作的某些功能在新版本中工作方式不同或根本不工作,看起来这个问题可能就是其中之一。

因此,您可能需要考虑切换到 Apache HTTPd(如果可以的话),然后您就不需要对文件进行所有这些更改——我发现 Apache 在支持 SSI(和其他技术/模块、配置指令等)在所有支持它的 HTTPd 版本中。这种一致性是我真正喜欢它的原因之一。

于 2010-07-14T06:31:52.950 回答
0

这不是真正的答案,而是更多地确认您的问题。virtual但是,请在我的回答结束时查看一种可能对您有用的方法。

来自 MSDN 博客文章IIS:关于服务器端包含 (SSI) 语法的注释(KB 203064 Revisited) (日期为 2010 年 12 月 28 日;适用于 IIS 版本 4.0 到 7.5)


有关文件和虚拟语法的更多信息

使用文件路径的 SSI 指令可以通过使用文件虚拟路径来引用文件。

  • file元素用于与当前文档的文件夹相关的文件。以下示例包含当前文件夹中的文件:
<!--#include file="myfile.txt"-->
  • 虚拟元素表示相对于 Web 服务器的基本文件夹的路径。以下示例在 /scripts 虚拟文件夹中包含一个文件:
<!--#include virtual="/scripts/myfile.txt"-->

结论:file属性用于指定相对于当前文档的文件位置。因此,如果这是您的情况所需要的,您确实需要将virtual属性更改为file属性。

不过,有一个可能的例外。Wikipedia 上的文章Server Side Includes显示了以下示例:

<!--#include virtual="menu.cgi" -->

这向我表明,virtual文件路径不一定需要以/. 在没有前导的情况下/,文件的位置virtual是相对于 Web 服务器的基本文件夹的。

因此,在我看来,如果被引用的文件恰好位于 Web 服务器的基本文件夹(或基本文件夹的子文件夹)中,则fileandvirtual属性的行为可能相同。

于 2014-08-19T18:01:00.150 回答