【问题标题】:Images Isapi filter settings to resize images from parameter in 64 bit图像 Isapi 过滤器设置可根据 64 位参数调整图像大小
【发布时间】:2012-10-30 17:15:13
【问题描述】:

我正在使用 C# 在现有的 ASP.net2.0 应用程序中工作并部署在 IIS 7.5 上,在 windows 2008 R2 服务器 64 位中。

在我的应用程序中,各种图像大小是从下面给出的 IIS 设置中处理的。这样做的效果是,如果我们访问图像大小为

http//domainname.com/images/imagename.jpg?w=21&h=213

图像会根据给定的宽度和高度参数自动调整大小。这一切都是因为 web.config 中的以下条目

<system.webServer>
    <handlers>      
        <add name="png" path="*.png" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
        <add name="jpg" path="*.jpg" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
        <add name="jpeg" path="*.jpeg" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv2.0,bitness32" />
    </handlers>
</system.webServer>

当我们在上面的 web.config 文件中为指向路径 aspnet_isapi.dll 的图像添加 isapi 过滤器时,条目就出现了。

效果很好。

现在我已将同一 IIS 上的应用程序池从 32 位升级到 64 位。图像调整发生失败。 我认为的原因是因为在配置中它说“bitness32”,所以我们将其设置为 64 位,如“bitness64”并更新了配置

<system.webServer>
    <handlers>      
        <add name="png" path="*.png" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
        <add name="jpg" path="*.jpg" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
        <add name="jpeg" path="*.jpeg" verb="*" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll" resourceType="Unspecified" preCondition="classicMode,runtimeVersionv2.0,bitness64" />
    </handlers>
</system.webServer>

但是当我们这样做时,网站中不再出现各种图像。

请建议我,我们如何紧急解决这个问题

问候,

【问题讨论】:

    标签: c# asp.net iis-7.5 32bit-64bit windows-server-2008-r2


    【解决方案1】:

    您可以在 IIS 7 中将启用 32 位应用程序设置为 True(在您的应用程序正在使用的应用程序池上)。

    在 64 位 Windows 上,32 位进程无法加载 64 位 DLL,64 位进程无法加载 32 位 DLL。如果您计划在 64 位 Windows 上运行 32 位应用程序,则必须配置 IIS 以创建 32 位工作进程。将 IIS 配置为创建 32 位工作进程后,您可以在 64 位 Windows 上运行以下类型的 IIS 应用程序:

    • Internet 服务器 API (ISAPI) 扩展
    • ISAPI 过滤器
    • Active Server Page (ASP) 应用程序(特别是调用 COM 对象的脚本,其中 COM 对象可以是 32 位或 64 位)
    • ASP.NET 应用程序

    屏幕:

    【讨论】:

    • 我们无法在应用程序池上启用 32 位,因为我们已将应用程序升级到 64 位。这是 Tridion 应用程序,Tridion 升级到 2011 版本,使用 64 位 dll,因此,我们无法启用 32 位。请提出建议。
    • 我们已经重建了只使用 64 位 dll 的应用程序,并且 C# 应用程序是使用“任何 CPU”构建的,因此 Web 应用程序不再使用 32 位 dll。我们需要在 64 位环境下运行图像调整大小。请提出建议。
    猜你喜欢
    • 2016-08-21
    • 2017-08-12
    • 1970-01-01
    • 2012-06-22
    • 2018-06-19
    • 2017-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多