.NET Framework位置的环境variables

我工作在一个.NET Web应用程序,针对多个.NET和IIS版本,这是与一个web.config文件交付。 我们已经能够使用相同的web.config文件的大多数设置,但我们有一条线给我们带来麻烦。

我们的/configuration/system.web/handlers之一需要指定一个到aspnet_isapi.dll的path。

<remove name="ASP.Net-ISAPI-Wildcard" /> <add name="ASP.Net-ISAPI-Wildcard" path="*" verb="*" type="" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" requireAccess="None" allowPathInfo="false" preCondition="runtimeVersionv2.0" responseBufferLimit="4194304" /> 

正如你所看到的,path直接指向一个框架版本,由于有些人是32位用户(使用Microsoft.Net\Framework )而其他人是64位用户( who use Microsoft.Net\Framework64 ) 。

有没有像%windir%这样的环境variables,我可以使用它指定正确的框架版本的path,而不必硬编码.NET DLL的path?

为了回答你的具体问题,不,asp.net isapi模块没有环境variables。

使用托pipe处理程序这不是一个问题,您只需指定您想要的程序集的types名称和签名,IIS将从全局程序集caching

但是,对于ISAPI模块,您仍然需要提供一个path,但是您可以定义2个处理程序,并根据托pipe应用程序为其提供不同的前提条件:

 <remove name="ASP.Net-ISAPI-Wildcard" /> <add name="ASP.Net-ISAPI-Wildcard-64" scriptProcessor="%windir%\Microsoft.NET\Framework64\v2.0.50727\aspnet_isapi.dll" preCondition="runtimeVersionv2.0,bitness64" /> <add name="ASP.Net-ISAPI-Wildcard-32" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" preCondition="runtimeVersionv2.0,bitness32" /> 

(细节省略强调相关属性)