You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Umbraco 12部署IIS后查询字符串缩放图片失效问题

解决Umbraco 12部署至IIS后图片缩放失效问题

你的判断完全正确——IIS直接返回静态图片文件,导致Umbraco的ImageSharp中间件无法捕获带查询参数的图片请求。以下是具体解决步骤:

一、配置IIS重写规则,转发图片请求至Umbraco

在站点的web.config文件中,添加URL重写规则,强制将包含缩放参数的图片请求交给ASP.NET Core模块处理:

<system.webServer>
  <!-- 保留原有配置,新增以下重写规则 -->
  <rewrite>
    <rules>
      <rule name="Forward image processing requests to Umbraco" stopProcessing="true">
        <match url="^.*\.(jpg|jpeg|png|gif|webp)$" ignoreCase="true" />
        <conditions logicalGrouping="MatchAny">
          <add input="{QUERY_STRING}" pattern="(width|height|mode|quality|format)" />
        </conditions>
        <action type="Rewrite" url="{REQUEST_URI}" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>
  • 该规则会匹配所有带缩放相关查询参数的图片请求,强制转发给Umbraco处理。
  • 确保服务器已安装IIS URL重写模块(可通过Web平台安装程序添加)。

二、确认Umbraco ImageSharp配置

检查appsettings.json中ImageSharp是否正常启用:

"Umbraco": {
  "CMS": {
    "Imaging": {
      "ImageSharp": {
        "Enabled": true,
        "MaxWidth": 4000,
        "MaxHeight": 4000,
        "Quality": 80
      }
    }
  }
}

Umbraco 12默认启用ImageSharp,但如果之前修改过配置,需确认Enabled值为true。

三、调整IIS处理程序映射顺序

在IIS管理器中:

  1. 打开站点的处理程序映射
  2. 确保AspNetCoreModuleV2的优先级高于StaticFile处理程序
  3. 若顺序错误,通过“查看排序”功能调整,让ASP.NET Core模块优先处理请求

四、关于GetCropUrl方法的说明

GetCropUrl(width:100)生成带查询参数的URL本身是正确的,问题根源在IIS的请求转发逻辑。解决上述配置后,该方法生成的URL会正常触发ImageSharp的缩放处理。如果需要更稳定的裁剪方案,也可以在媒体类型中预先定义裁剪别名(如thumbnail),然后使用GetCropUrl("thumbnail"),生成的URL格式为/media/xxx/photo.jpg?crop=thumbnail,同样会被上述重写规则覆盖处理。


内容的提问来源于stack exchange,提问作者Hrvoje Hudo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 11:35:08