从 .net 5 迁移到 .net 6 后,我无法在 IIS Express 中运行我的 Web 应用程序项目。我收到一条错误消息,指出“找不到 localhost 页面。”
根据我所学到的知识,我已经完成了在目标框架之间迁移的正确步骤。我已在应用程序属性中将目标框架更改为 .net 6,并使用 NuGet Pkg Manager 更新了所有受影响的 NuGet 包。当我构建项目时没有显示任何错误,并且我已确保 Visual Studio 已更新到最新版本,截至撰写本文时为 17.2.5。
我的launchsettings.json文件中的IIS设置如下:
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:35317",
"sslPort": 44352
}
}
我的家庭控制器中确实有一个索引视图返回。但我仍然收到错误
No webpage was found for the web address: https://localhost:44352/
当我运行应用程序时。
为了节省时间,我保留了 .Net 5 版本中 Startup.cs 和 Program.cs 的“旧”托管模型,据我所知,Microsoft 认为这是可以接受的。这些文件中的代码均未进行任何更改。
我错过了什么?
编辑:我的 Program.cs 代码如下,应 @adrianMoskal 的要求
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
编辑2:
根据 @adrianMoskal,我将 Program.cs 文件更新为 .NET 6 标准。现在看起来像这样:
var builder = WebApplication.CreateBuilder(args);
// Add DB Contexts and Services here
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
不幸的是,错误仍然存在。
我创建了一个新项目来从.net 5迁移到.net 6,但是没问题,工作正常,我将向您展示完整的步骤:
.csproj:
更改版本如下:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<!--<TargetFramework>net5.0</TargetFramework>-->
<TargetFramework>net6.0</TargetFramework>
<RootNamespace>_2022070802</RootNamespace>
<CopyRefAssembliesToPublishDirectory>false</CopyRefAssembliesToPublishDirectory>
</PropertyGroup>
<ItemGroup>
<!--<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="5.0.16" />-->
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="6.0.1" />
</ItemGroup>
</Project>
然后我删除Startup.cs并更改Program.cs:
var builder = WebApplication.CreateBuilder(args);
// Add DB Contexts and Services here
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
更多详细信息,请参阅此链接。
您可以创建一个新的空项目从.net 5迁移到.net 6,看看问题是否仍然存在。我认为这可能是您的某些配置引起的问题,也许您可以检查一下您的路径是否正确?
答案似乎是“管你的,重新开始。”
我尝试将项目代码复制到新的 .net 6 项目中——即将所有视图、控制器等复制到新项目并相应地更新新的 Program.cs 文件——但我仍然得到了同样的错误。然后我尝试将另一个 .net 5 项目转换为 .net 6,并再次遇到相同的错误。显然,转换是行不通的。
就这样吧。我不干了。我还有太多别的事要做,不用担心这个。不管怎样,感谢那些回复这篇文章的人试图帮助解决这个问题。
我也遇到了同样的问题,我将Visual Studio更新到最新版本,问题解决了!