Asp classic 经典asp页面包含(.inc)文件的IIS处理程序映射
我正在向IIS 10中托管的较新版本的Windows server授予一个经典ASP站点 加载default.asp页面时,我在浏览器的开发者工具“网络”选项卡中发现,helpers.inc文件无法找到。但它与默认页面位于同一文件夹中 以下代码在default.asp页面中调用helpers.inc文件:Asp classic 经典asp页面包含(.inc)文件的IIS处理程序映射,asp-classic,include,Asp Classic,Include,我正在向IIS 10中托管的较新版本的Windows server授予一个经典ASP站点 加载default.asp页面时,我在浏览器的开发者工具“网络”选项卡中发现,helpers.inc文件无法找到。但它与默认页面位于同一文件夹中 以下代码在default.asp页面中调用helpers.inc文件: <script src="helpers.inc" language="VBScript" defer="true"></script> 我尝试使用%windir%\
<script src="helpers.inc" language="VBScript" defer="true"></script>
我尝试使用%windir%\system32\inetsrv\asp.dll可执行文件为*.inc文件添加处理程序映射,但它似乎不起作用。给我一个新的错误:
HTTP错误404.17-找不到
请求的内容似乎是脚本,静态文件处理程序不会提供这些内容。
最可能的原因:
•请求与通配符mime映射匹配。请求被映射到静态文件处理程序。如果有不同的前置条件,请求将映射到不同的处理程序。
我想知道我需要什么才能让asp页面识别/读取include(.inc)文件?include可以工作,但Lankymart的答案是正确的 我创建了helpers.inc文件:
Sub MakeAMsg(MsgText)
MsgBox MsgText
End Sub
我使用了Include并保留了.inc扩展名:
<script language=VBS>
<!--#include file=helpers.inc-->
makeamsg("This Used Include")
</script>
<SCRIPT language=VBS src=helpers.vbs></SCRIPT>
<script language=VBS>
makeamsg("This Used Script tags with vbs extension")
</script>
makeamsg(“使用的包括”)
它起作用了。我使用VBS扩展名重命名了.inc:
<script language=VBS>
<!--#include file=helpers.inc-->
makeamsg("This Used Include")
</script>
<SCRIPT language=VBS src=helpers.vbs></SCRIPT>
<script language=VBS>
makeamsg("This Used Script tags with vbs extension")
</script>
makeamsg(“此使用的脚本标记具有vbs扩展名”)
这也行得通
我检查了服务器,默认情况下,vbs设置为文本/vbscript的mimetype。(我正在设置另一个我没有改变任何东西的地方,它也有这个映射。)
因此,使用#include确实有效,但将扩展名更改为.vbs或添加与.vbs mime类型重复的mimetype会更好。如果这一行是它在迁移代码中的显示方式(无需任何修改)
runat=“server”
属性的脚本标记
<script language="VBScript" runat="server">
...
</script>
有用的链接
- (用于不为客户端脚本使用
扩展的参数).inc
language=vbs
是否是客户端VBScript的可接受标识符?。vb
文件,您在谈论使用vb.Net的ASP.Net吗?SSI是一种IIS功能,允许在经典ASP页面中包含服务器端脚本。通常它们只使用.asp
扩展名(这是默认的处理程序映射扩展名),但有时它们被重命名为.ssi
或.inc
,以表示它们是#包含文件。但是,我认为这不是SSI,因为脚本标记不能像那样用于调用服务器端脚本。@Lankymart是的,它是客户端和服务器端VBScript的有效别名。JScript甚至更糟糕ECMAScript
,JavaScript
,JavaScript1.1
,JavaScript1.2
,JavaScript1.3
,LiveScript
所有指向JScript
:/@Lankymart在我们编写的应用程序中工作,我从未更改过它。值得一提的是,如果您使用文件作为服务器端包含,则不管文件扩展名是什么,IIS都会将其解析,就像它是包含它的页面的一部分一样。.inc扩展名只是一种惯例,用于向编码人员标识它是一个包含文件。那么您建议他如何解决他的问题?@Julie这取决于.inc
文件是什么。如果它包含服务器端脚本(处理器标记或服务器端脚本标记),则不应直接访问它,因此404.17
是正确的行为,OP需要使用#include
语法,以允许它在ASP页面内运行。如果没有,则OP需要为.inc
添加MIME类型映射,否则它将继续返回404.3
,这是未映射文件类型的默认行为。但正如我已经说过的,如果OP提供的脚本标记是迁移的web应用程序中的“原样”,那么它就不能是SSI。@Lankymart,对不起,直到我回复完上面每个人的评论后才注意到答案。回答得很好。我尝试了您列出的第三种方法,现在asp页面显示了我创建的Helpers.asp页面中的所有函数源代码,其中包含复制的所有内容
<!-- #include virtual = "somefile.asp" -->