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

Blazor Server嵌入Shopify站点时_blazor.server.js文件404问题求助

解决方案

1. 完善Blazor服务端路径与静态文件配置

在Program.cs中,除了设置UsePathBase,还要给静态文件中间件指定请求路径映射,确保Blazor的资源请求能正确路由到托管服务:

var builder = WebApplication.CreateBuilder(args);

builder.Services.AddRazorPages();
builder.Services.AddServerSideBlazor();

var app = builder.Build();

// 设置应用路径基准
app.UsePathBase("/AppName");

// 配置静态文件,将指定请求路径映射到Blazor的_framework资源
app.UseStaticFiles(new StaticFileOptions
{
    RequestPath = "/AppName/_framework"
});

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

app.Run();

2. 修正_Host.cshtml中的资源引用

在Blazor的_Host.cshtml文件里,把blazor.server.js的引用改为指向Blazor托管地址的绝对路径,或者配合路径基准生成正确的相对路径:

<!-- 方式1:使用绝对路径直接指向Blazor服务 -->
<script src="https://你的Blazor托管域名/AppName/_framework/blazor.server.js"></script>

<!-- 方式2:利用ASP.NET Core的路径辅助生成正确路径 -->
<script src="_framework/blazor.server.js" asp-src="/AppName/_framework/blazor.server.js"></script>

3. 配置Shopify App Proxy的路径转发规则

在Shopify后台的App Proxy设置中,确保将/AppName/*前缀的请求转发到你的Blazor Server托管地址:

  • 代理路径前缀:/AppName
  • 目标URL:https://你的Blazor托管域名/AppName
    这样Shopify会把所有以/AppName开头的请求(包括_framework资源请求)转发到Blazor服务端。

4. 配置跨域访问(若存在跨域场景)

如果Blazor服务和Shopify站点属于不同域名,需要在Blazor服务中配置CORS规则,允许Shopify域名的请求:

builder.Services.AddCors(options =>
{
    options.AddPolicy("ShopifyAllowed", policy =>
    {
        policy.WithOrigins("https://你的Shopify店铺域名.myshopify.com")
              .AllowAnyHeader()
              .AllowAnyMethod()
              .AllowCredentials();
    });
});

// 在路由中间件之前启用CORS
app.UseCors("ShopifyAllowed");

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:52:06