IIS web.config,除%s以外的任何其他%符号?

时间:2013-07-20 14:09:33

标签: iis web-config scriptprocessor

关于IIS web.config的处理程序部分中的scriptProcessor,除了%s(它似乎代表所请求的文件名)之外是否还有%符号?例如,%a是公认的宏/符号吗?除了%s之外还有其他人,他们在哪里描述?

2 个答案:

答案 0 :(得分:3)

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

来自documentation

  

脚本处理器

     

可选字符串属性。

     

指定处理请求的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>