IIS web.config,除%s之外还有其他%s符号吗?

IIS web.config,除%s之外还有其他%s符号吗?,iis,web-config,scriptprocessor,Iis,Web Config,Scriptprocessor,关于IIS的web.config的handlers部分中的scriptProcessor,除了%s(似乎代表请求的文件名)之外,是否还有%s符号?例如,%a是公认的宏/符号吗?如果除%s之外还有其他人,他们的描述在哪里?您的问题有点不清楚,因此我必须做出一些假设才能回答。如果我做错了什么,请告诉我 从: 脚本处理器 可选的字符串属性 指定处理请求的ISAPI扩展名.dll文件或公共网关接口(CGI).exe文件的物理路径 只有脚本映射处理程序映射才需要scriptProcessor属性。将处理程

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

您的问题有点不清楚,因此我必须做出一些假设才能回答。如果我做错了什么,请告诉我

从:

脚本处理器

可选的字符串属性

指定处理请求的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
)可能会给您带来一些有趣的东西,但可能不会。看起来这是一个非常具体的问题的非常具体的解决方案。

这与您的问题没有严格的关系,但我发布了这两个链接,因为它们在某种程度上是相互关联的,可能很有用

我已经找到了如何使用“@”和“$”来转换Web.Config,但在“%”上没有发现与环境变量没有严格关系的内容

第一个链接:“@”

第一个链接解释了可以在Web.config转换文件中使用的xdt:Transform和xdt:Locator属性的用法:

此示例是使用带“@”的条件进行Web.Config转换的有趣用法:


链接的摘录,显示如何使用MSBuild从Web应用程序项目文件转换Web.Config文件:

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <OutputPath>bin\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <OutputPath>bin\</OutputPath>
</PropertyGroup>

垃圾箱\
垃圾箱\

我知道有%windir%符号:但我不知道是否还有其他东西。这肯定是朝着正确的方向发展的。我没有想到%windir%和其他环境变量在该上下文中可用的可能性。谢谢你。是的,不太清楚。对“格式化字符串”的兴趣不如对其他“宏”的兴趣(因为缺少更好的单词。)例如,%s表示请求的脚本名称。%a有什么意义吗,等等?在做了一些研究之后,如果您发出
%s
,一旦它给了您请求的脚本名称,第二次发出
%s
将给您提供参数。然而,我还没有找到任何微软的文档。我发现的一切都与让perl在IIS下工作有关。我认为微软不想宣传这种情况的存在。他们希望人们使用ISAPI,而不是依赖于参数传递。我看不出除了名称和参数之外还有其他格式字符串存在的迹象。这有点奇怪,因为我在IIS论坛上读到的帖子表明这是由于
intmain(intargc,char**argv)
造成的,但他们忘记了后面的
char**envp
和argc!=脚本名,但我离题了。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <OutputPath>bin\</OutputPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
    <OutputPath>bin\</OutputPath>
</PropertyGroup>