在IIS Express / Visual Studio中启用服务器端包含

时间:2016-03-30 12:16:25

标签: visual-studio visual-studio-2015 iis-express ssi

我正在使用VS2015和内置的IIS Express服务器......

是否可以启用服务器端包含(SSI),例如:

<!--#include virtual="/include/test.shtml" -->

我知道我可以在完整的IIS上使用SSI,但我找不到有关在IIS Express上使用SSI的任何信息。

(我不能使用包含片段的替代方法(例如asp),因为此代码也必须在非IIS服务器上运行。)

4 个答案:

答案 0 :(得分:1)

它与.asp文件无关。你只需要正确的配置。

我已经安装了SSI模块并将其配置为IIS Express的一部分(我使用的是Visual Studio 2017社区版),但我发现有些文章表明它需要单独安装。

在applicationHost.config文件中,handlers部分中有此条目:

<add name="SSINC-shtml" path="*.shtml" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />

这意味着您的文件必须是.shtml扩展名才能由SSI模块处理。在web.config文件中为自己添加一个条目:

<configuration>
<system.webServer>
    <handlers>
        <add name="SSINC-html" path="*.html" verb="*" modules="ServerSideIncludeModule" resourceType="File" />
    </handlers>
</system.webServer>

现在SSI将使用普通的HTML文件。

答案 1 :(得分:0)

似乎让SSI工作的唯一方法是重命名我的&#39; .htm&#39;和&#39; .html&#39;文件到&#39; .asp&#39;。然后SSI语法有效。

这有点痛苦,因为我需要在非IIS服务器上运行相同的代码......

答案 2 :(得分:0)

看看: http://vlads-hideout.blogspot.com/2013/05/server-side-include-in-iis-express.html 它有些过时了。现在可以在不可见的“ .vs”文件夹中找到配置文件,该文件夹由Visual Studio在项目文件夹中自动创建。 “ .vs \ config \ applicationhost.config”。

它已经包含globalModules条目:

        <add name="ServerSideIncludeModule" image="%IIS_BIN%\iis_ssi.dll" />

和/中的以下条目:

            <add name="SSINC-stm" path="*.stm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
            <add name="SSINC-shtm" path="*.shtm" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />
            <add name="SSINC-shtml" path="*.shtml" verb="GET,HEAD,POST" modules="ServerSideIncludeModule" resourceType="File" />

例如,自动为“ * .SHTML”激活SSI。 如果确实要修改默认文档或HTML文件扩展名,则只需将其中一个配置语句的副本放入web.config的/部分中,然后适当地更改扩展名即可。

答案 3 :(得分:0)

在过去两年中,经过多次艰苦的努力寻找解决此问题的方法之后,我发现了我们中许多人遇到的问题。 ASHRAF的答案正确,但是我没有仔细阅读。他的配置文件添加/更改是针对 .HTML文件。。我正在为文件BEING INCLUDED(* .inc)添加文件,而不是为包含(.html)文件添加文件。请注意,此行适用于.html文件 谢谢ASHRAF。