关于 IIS 的 web.config 的处理程序部分中的 scriptProcessor,除了 %s 之外是否还有任何 % 符号(这似乎代表请求的文件名)?例如,%aa 是否可以识别宏/符号?如果除了 %s 之外还有其他人,他们是在哪里描述的?
2 回答
你的问题有点不清楚,所以我不得不做出一些假设才能回答。如果我有什么问题,请告诉我。
从文档中:
脚本处理器
可选的字符串属性。
指定处理请求的 ISAPI 扩展 .dll 文件或通用网关接口 (CGI) .exe 文件的物理路径。
只有脚本映射处理程序映射需要 scriptProcessor 属性。将处理程序映射到 ISAPI 扩展时,必须为模块属性指定 ISAPIModule。当您将处理程序映射到 CGI 文件时,您必须为 modules 属性指定 CGIModule。
从文档中,我们根本没有看到任何关于格式字符串的提及。如果有格式字符串,你会用什么替换它们?基于 XML 没有明确的答案。也许您将环境变量误认为格式字符串。或者您的特定配置设置有一些在它被推送之前运行的后期处理。
如果我们实际上是在谈论环境变量,那么您可以通过 Win+Break 调出系统设置来查看它们,进入高级,然后打开环境变量。您也可以定义自己的。要使用任何环境变量,您可以%variablename%
像在标准 .bat 文件中那样使用。
编辑:经过更深入的研究,我发现了以下内容。 %s
会给你脚本名称,然后%s
再给你参数foo=bar
。在任何官方 IIS 文档中都没有宣传此功能(我可以找到)。我强烈怀疑它被视为已弃用的功能。他们正在努力使 ISAPI 成为规范。
由于它的结构(即像标准格式字符串),我怀疑尝试其他常见格式字符串 ( %d %c %f
) 可能会给您带来一些有趣的东西,但可能不会。看起来这是一个非常具体的问题的非常具体的解决方案。
它与您的问题并不严格相关,但我发布了这两个链接,因为它们以某种方式连接并且可能有用。
我已经找到了如何使用“@”和“$”来转换 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>