我正在使用VS2015和内置的IIS Express服务器......
是否可以启用服务器端包含(SSI),例如:
<!--#include virtual="/include/test.shtml" -->
我知道我可以在完整的IIS上使用SSI,但我找不到有关在IIS Express上使用SSI的任何信息。
(我不能使用包含片段的替代方法(例如asp),因为此代码也必须在非IIS服务器上运行。)
答案 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。