我是新的IIS配置。我试图主机我的.NET 7 API的IIS上,但我有一个错误,我无法解决。
当我尝试使用IIS运行我的应用程序时,我收到此错误:“HTTP错误500.30 - ASP.NET核心应用程序无法启动”。
事件查看器显示:
System.IO.FileNotFoundException: Could not load file or assembly 'w3wp, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.
File name: 'w3wp, Culture=neutral, PublicKeyToken=null'
at System.Reflection.RuntimeAssembly.InternalLoad(AssemblyName assemblyName, StackCrawlMark& stackMark, AssemblyLoadContext assemblyLoadContext, RuntimeAssembly requestingAssembly, Boolean throwOnFileNotFound)
at System.Reflection.Assembly.Load(AssemblyName assemblyRef)
at Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartManager.GetApplicationPartAssemblies(String entryAssemblyName)
at Microsoft.AspNetCore.Mvc.ApplicationParts.ApplicationPartManager.PopulateDefaultParts(String entryAssemblyName)
at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.GetApplicationPartManager(IServiceCollection services, IWebHostEnvironment environment)
at Microsoft.Extensions.DependencyInjection.MvcCoreServiceCollectionExtensions.AddMvcCore(IServiceCollection services)
at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddControllersCore(IServiceCollection services)
at Microsoft.Extensions.DependencyInjection.MvcServiceCollectionExtensions.AddControllers(IServiceCollection services)
程序-〉第57行-〉“构建器.服务.添加控制器();“抛出异常。当我启动应用程序时,我看到w3wp.exe正在运行。但我仍然得到错误。
目前为止我所做的:
1.在我的Windows Server 2019上安装了IIS。
1.已安装.Net 7托管捆绑包。
- 我使用此设置发布我的应用:
- 配置:放行
- 目标框架:网络7.0
- 部署模式:依赖于框架
- 目标运行时间:便携式
- 已将文件复制到此位置:
C:\inetpub\wwwroot\api.mycompany.com
- 使用“无托管代码”和“集成”管道模式创建我的应用程序池。
- 创建站点并运行它。
- 我的web.config文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2"
resourceType="Unspecified" />
</handlers>
<aspNetCore processPath="dotnet" arguments=".\WebApi.dll" stdoutLogEnabled="false"
stdoutLogFile=".\logs\stdout" hostingModel="inprocess" />
</system.webServer>
</location>
</configuration>
使用此设置,我的应用程序给予我上面提到的错误。然而,当我双击我的exe并在IIS之外运行它时,我的应用程序运行完美,我可以运行所有的get-post请求而没有错误。
我试图解决的问题:
1.将.NET CLR版本更改为v4.0失败。
1.将“启用32位应用程序”设置为“真”、“失败”
1.将托管管道模式更改为经典,失败。
1.发布我的应用win-x86和win-x64自包含,失败。
- 基于其他答案
- 将标识更改为本地服务失败。
- 将标识更改为NetworkService失败。
- 将身份更改为自定义帐户并以管理员用户身份登录失败。
- 将“加载用户配置文件”设置设置为True失败。
- 授予IIS_IUSRS和网络服务对目录 “C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files”的完全访问权限, 失败。
- 授予IIS_IUSRS网络服务对项目目录的完全访问权限失败。
- 移除项目目录上的.pdb文件失败。
- 以管理员身份启动Visual Studio并再次发布我的应用程序,失败。
不管我怎么试都没用,我做错了什么?
1条答案
按热度按时间tnkciper1#
我找到了解决方案。就像@Lex Li说的,我的程序中有不正确的代码。cs:
看起来像“Process.GetCurrentProcess()”方法转到w3 wp。我更改为原始版本:
之后,我的应用程序在IIS上完美运行。