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

ASP.NET Core 2.2部署AWS Beanstalk时SessionStateModule程序集加载失败

问题根因
  1. 你在命令行直接用dotnet命令启动应用时,调用的是.NET Core CLR,默认从当前目录加载依赖,因此可以正常运行;但IIS收到请求时,走了ASP.NET Framework的程序集查找逻辑,会优先到站点根目录下的bin子目录查找DLL,而.NET Core默认发布的所有依赖DLL都直接放在输出根目录,没有bin子目录,因此找不到对应的程序集。
  2. 你之前将bindingRedirect配置写在BLL.dll.config中无效,IIS的运行时只会读取站点根目录下的web.config配置。
  3. .NET Core项目默认不会自动复制引用的.NET Framework类库的第三方NuGet依赖到发布输出目录。
可行解决方案

优先方案(从根源解决问题)

Microsoft.AspNet.SessionState.SessionStateModule是专为传统ASP.NET设计的NuGet包,在.NET Core环境中完全不需要使用。如果你的BLL项目中只是引用了该包但实际没有使用相关Session逻辑,直接从BLL项目中卸载该NuGet包,重新发布即可解决问题。

无法移除依赖时的解决方案

1. 强制发布时复制所有私有依赖

打开Web.API项目的.csproj文件,添加如下配置,强制发布时将所有依赖的DLL都复制到输出目录:

<PropertyGroup>
  <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
</PropertyGroup>

2. 修正配置文件

将你之前写在BLL.dll.config中的bindingRedirect配置,移动到Web.API项目的web.config的<runtime>节点下,同时添加探针路径配置,让运行时可以从站点根目录查找DLL:

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <probing privatePath="."/>
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.AspNet.SessionState.SessionStateModule" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

3. 修正IIS应用程序池配置

打开IIS管理器,找到对应站点的应用程序池,做如下配置:

  • 托管模式设置为无托管代码
  • 启用32位应用程序设置为False
  • 确认应用程序池身份对部署目录拥有读取、执行权限

4. 重新发布部署

执行如下发布命令:

dotnet.exe publish -o "${publishWorkspace}\website_web_api" /property:Configuration=Debug

将发布输出的所有文件复制到IIS站点部署目录,重启应用程序池后重新访问测试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:45:03