Blazor Server搭建Identity脚手架后遇ANCM 500.35进程内应用冲突错误求助
解决Blazor Server Identity脚手架后登录出现ANCM 500.35错误的方案
这个错误本质是因为同一IIS应用池里不能同时运行多个进程内托管的ASP.NET Core应用——你的Blazor Server主应用默认是进程内托管,而脚手架生成的Identity区域被识别成了另一个进程内应用,两者冲突导致的。下面是几个可行的解决办法:
方法一:将整个项目改为进程外托管
这是最省心的方案,直接让整个应用(包括Identity区域)以进程外模式运行,避免同一池内的冲突:
- 打开你的Blazor Server项目的
.csproj文件 - 找到
<AspNetCoreHostingModel>配置项,如果当前值是InProcess,改成OutOfProcess - 保存文件后,重新发布项目或者重启IIS应用池
方法二:为Identity区域单独分配应用程序池
如果不想改变主应用的托管模式,可以给Identity区域单独建一个应用池:
- 打开IIS管理器,找到你的Blazor Server站点
- 找到站点下的
Identity虚拟目录,右键选择转换为应用程序 - 在弹出的对话框中,点击“选择”按钮,新建一个应用程序池(比如命名为
BlazorIdentityPool),注意把.NET CLR版本设置为无托管代码(ASP.NET Core应用不需要传统托管) - 确认设置后,把Identity应用绑定到这个新的应用池里,重启两个应用池即可
方法三:排查项目配置冲突
有时候脚手架生成的代码可能和主应用的配置有冲突,你可以检查这几点:
- 打开
Program.cs(或者Startup.cs,取决于你用的.NET版本),确认Identity服务只注册了一次,没有重复添加AddIdentity或AddDefaultIdentity的代码 - 检查脚手架生成的
_LoginPartial.cshtml等视图文件,确保里面的路由路径正确,没有指向错误的地址
额外故障排查技巧
如果上面的方法还没解决,可以用这些方式深挖问题:
- 查看系统事件日志:打开Windows事件查看器,定位到「Windows日志」→「应用程序」,找到ASP.NET Core相关的错误条目,里面会有更具体的错误细节
- 启用stdout日志:在项目的
web.config里,找到<aspNetCore>节点,添加配置:
重启应用后,查看<aspNetCore processPath="dotnet" arguments=".\YourApp.dll" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />logs目录下的日志文件,能看到应用运行时的输出信息,帮助定位问题 - 附加调试器:开发环境下,在Visual Studio里选择「调试」→「附加到进程」,找到你的应用进程(通常是
dotnet.exe或者w3wp.exe),在登录相关的代码处设置断点,跟踪执行流程找到错误点
内容的提问来源于stack exchange,提问作者techstack
相关产品推荐
相关产品推荐

