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

Blazor/IIS环境下HTTP强制跳转HTTPS失效,非HTTPS链接报404

问题描述

部署在IIS上的Blazor应用遇到以下问题:所有未显式使用HTTPS的链接返回404错误,无法自动重定向到HTTPS。

示例:

app.domain.com -> 404  
http://app.domain.com -> 404  
https://app.domain.com -> 访问成功  

已尝试的解决方案

  • 配置IIS URL Rewrite规则,实现HTTP转HTTPS的重定向逻辑
  • 在IIS站点设置中取消并重新勾选“要求SSL”选项
  • 修改web.config中的重定向URL为硬编码域名格式:url="https://app.domain.com/{R:1}",替代原有的url="https://{HTTP_HOST}{REQUEST_URI}"
  • 在Program.cs中添加app.UseHttpsRedirection();,并配置HTTPS重定向参数:
    builder.Services.AddHttpsRedirection(options =>
    {
        options.RedirectStatusCode = (int)HttpStatusCode.PermanentRedirect;
        options.HttpsPort = 443;
    });
    

当前代码

web.config重写规则

<rewrite>
    <rules>
        <rule name="Redirect HTTP to HTTPS" stopProcessing="true">
            <match url="(.*)" />
            <conditions>
                <add input="{HTTPS}" pattern="^OFF$" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="SeeOther" />
        </rule>
    </rules>
</rewrite>

Program.cs代码

// <<<< BUILDER.SERVICES.ADDSINGLETON... >>>>
builder.Services.AddResponseCompression(o =>
{
    o.EnableForHttps = true;
    o.Providers.Add<BrotliCompressionProvider>();
    o.Providers.Add<GzipCompressionProvider>();
    o.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
        new[] { "image/svg+xml" });
});
builder.Services.Configure<BrotliCompressionProviderOptions>(options =>
{
    options.Level = CompressionLevel.Optimal;
});
builder.Services.Configure<GzipCompressionProviderOptions>(options =>
{
    options.Level = CompressionLevel.Optimal;
});

var app = builder.Build();
// <<<<  APP.SERVICES.GetRequiredService... >>>>

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment() && !app.Environment.IsStaging())
{
    app.UseExceptionHandler("/Error");
    // The default HSTS value is 30 days. You may want to change this for production scenarios.
    app.UseHsts();
}

app.UseHttpsRedirection();

app.UseStaticFiles();

if(!app.Environment.IsProduction())
{
    StaticWebAssetsLoader.UseStaticWebAssets(app.Environment, app.Configuration);
}

app.UseRouting();
app.UseResponseCompression();

app.MapBlazorHub();
app.MapFallbackToPage("/_Host");

app.Run();

内容的提问来源于stack exchange,提问作者Joey C

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 12:15:32