关于IIS web.config的处理程序部分中的scriptProcessor,除了%s(它似乎代表所请求的文件名)之外是否还有%符号?例如,%a是公认的宏/符号吗?除了%s之外还有其他人,他们在哪里描述?
答案 0 :(得分:3)
你的问题有点不清楚,所以我不得不做出一些假设才能回答。如果我有任何错误,请告诉我。
脚本处理器
可选字符串属性。
指定处理请求的ISAPI扩展名.dll文件或公共网关接口(CGI).exe文件的物理路径。
scriptProcessor属性仅对脚本映射处理程序映射是必需的。将处理程序映射到ISAPI扩展时,必须为modules属性指定ISAPIModule。将处理程序映射到CGI文件时,必须为modules属性指定CGIModule。
从文档中,我们看不到任何格式字符串的提及。如果有格式字符串,你会用什么替换它们?基于XML,没有明确的答案。也许你误认为格式字符串的环境变量。或者,您的特定配置设置会在推送之前对其进行一些后期处理。
如果我们实际上是在谈论环境变量,那么您可以通过发出Win + Break来调查系统设置,转到高级,然后打开环境变量。您也可以定义自己的。要使用任何环境变量,您可以像使用标准.bat文件一样使用%variablename%
。
%s
会为您提供脚本名称,然后%s
会再次为您提供参数foo=bar
。在任何官方IIS文档中都没有公布(我可以找到)此功能。我强烈怀疑它被认为是一个被弃用的功能。他们正在努力使ISAPI成为常态。
由于它是如何构造的(即像标准格式字符串),我怀疑尝试其他常见格式字符串(%d %c %f
)可能会产生一些有趣的东西,但可能不会。看起来这是一个非常具体的解决方案。
答案 1 :(得分:0)
这与您的问题并不严格相关,但我发布这两个链接,因为它们在某种程度上是相互关联的,并且可能很有用。
我已经找到了如何使用“@”和“$”来转换Web.Config,但我没有发现“%”与环境变量没有严格关系。
第一个链接:“@”
第一个链接解释了可以在Web.config转换文件中使用的xdt:Transform和xdt:Locator属性:
http://msdn.microsoft.com/en-us/library/dd465326.aspx
这个例子是使用带有“@”的条件的Web.Config转换的有趣用法:
<configuration xmlns:xdt="...">
<connectionStrings>
<add name="AWLT" connectionString="newstring"
providerName="newprovider"
xdt:Transform="Replace"
xdt:Locator="Condition(@name='oldname'
or @providerName='oldprovider')" />
</connectionStrings>
</configuration>
第二个链接:“$”
第二个链接显示了如何使用“$”转换Web.Config,避免了在部署或测试不同服务器时手动注释/取消注释Web.Config部分的枯燥过程:
http://andrewtwest.com/2010/02/25/using-web-config-transformations-in-web-site-projects/
链接的摘录,显示如何使用MSBuild从Web应用程序项目文件开始转换Web.Config文件:
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<OutputPath>bin\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\</OutputPath>
</PropertyGroup>