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

部署Blazor WebAssembly后,Plesk服务器上的Asp.Net API停止响应求助

解决Blazor WebAssembly部署后虚拟目录中ASP.NET Core API停止响应的问题

一、先排查路由拦截问题

Blazor WASM默认的web.config里有重写规则,会把没匹配到静态文件的请求都转到index.html,这直接会把虚拟目录里的API请求给截胡了。直接改Blazor的web.config,加个排除规则,让API的虚拟目录路径跳过重写:

<rewrite>
  <rules>
    <rule name="Blazor Routes" stopProcessing="true">
      <match url=".*" />
      <conditions logicalGrouping="MatchAll">
        <!-- 把下面的「你的API虚拟目录名」换成实际的目录名 -->
        <add input="{REQUEST_URI}" pattern="^/你的API虚拟目录名/" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
      </conditions>
      <action type="Rewrite" url="index.html" />
    </rule>
  </rules>
</rewrite>

另外要确认API的虚拟目录在IIS里是独立应用程序,不是单纯的虚拟目录——右键虚拟目录选「转换为应用程序」,用独立的应用程序池。

二、检查应用程序池配置

  • 确认API的应用程序池用的是正确的.NET版本:比如.NET Core项目要选「No Managed Code」或者对应版本的CLR。
  • 看看部署Blazor后,API的应用程序池身份有没有被改,权限不够会导致API没法访问资源。
  • 直接重启API的应用程序池,说不定就能恢复响应。

三、排查静态文件中间件冲突

如果API和Blazor共享站点的静态文件配置,可能会导致API请求被静态文件中间件误处理:

  • 检查API的Program.cs里的静态文件配置,不需要的话直接删掉app.UseStaticFiles();,或者限定路径只处理API自身的静态文件。
  • 确保Blazor的静态文件中间件只处理根目录资源,不碰API的虚拟目录路径。

四、验证请求路径和站点绑定

  • 用Postman测API时,一定要用完整的虚拟目录路径,比如http://服务器地址/API虚拟目录/api/xxx,别用根路径瞎测。
  • 检查IIS站点的绑定,部署Blazor后有没有改端口、主机头,导致API的请求进不来。

五、看日志找具体问题

  • 查API的日志文件(默认在项目的Logs目录,或者Windows事件查看器的应用程序日志),有没有启动失败、报错信息。
  • 看IIS的日志(一般在C:\inetpub\logs\LogFiles),查API请求的状态码,确认请求到底是被拦截了,还是到了API但出错了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 21:25:24