6

关于 IIS 的 web.config 的处理程序部分中的 scriptProcessor,除了 %s 之外是否还有任何 % 符号(这似乎代表请求的文件名)?例如,%aa 是否可以识别宏/符号?如果除了 %s 之外还有其他人,他们是在哪里描述的?

4

2 回答 2

3

你的问题有点不清楚,所以我不得不做出一些假设才能回答。如果我有什么问题,请告诉我。

文档中:

脚本处理器

可选的字符串属性。

指定处理请求的 ISAPI 扩展 .dll 文件或通用网关接口 (CGI) .exe 文件的物理路径。

只有脚本映射处理程序映射需要 scriptProcessor 属性。将处理程序映射到 ISAPI 扩展时,必须为模块属性指定 ISAPIModule。当您将处理程序映射到 CGI 文件时,您必须为 modules 属性指定 CGIModule。

从文档中,我们根本没有看到任何关于格式字符串的提及。如果有格式字符串,你会用什么替换它们?基于 XML 没有明确的答案。也许您将环境变量误认为格式字符串。或者您的特定配置设置有一些在它被推送之前运行的后期处理。

如果我们实际上是在谈论环境变量,那么您可以通过 Win+Break 调出系统设置来查看它们,进入高级,然后打开环境变量。您也可以定义自己的。要使用任何环境变量,您可以%variablename%像在标准 .bat 文件中那样使用。

编辑:经过更深入的研究,我发现了以下内容。 %s会给你脚本名称,然后%s再给你参数foo=bar。在任何官方 IIS 文档中都没有宣传此功能(我可以找到)。我强烈怀疑它被视为已弃用的功能。他们正在努力使 ISAPI 成为规范。

由于它的结构(即像标准格式字符串),我怀疑尝试其他常见格式字符串 ( %d %c %f) 可能会给您带来一些有趣的东西,但可能不会。看起来这是一个非常具体的问题的非常具体的解决方案。

于 2013-07-31T06:35:34.187 回答
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>
于 2013-07-31T08:01:56.790 回答