将应用程序从 .net 5 迁移到 .net 6 后找不到本地主机

问题描述 投票:0回答:4

从 .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();

不幸的是,错误仍然存在。

asp.net-core .net-core model-view-controller localhost
4个回答
1
投票

我创建了一个新项目来从.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,看看问题是否仍然存在。我认为这可能是您的某些配置引起的问题,也许您可以检查一下您的路径是否正确?


0
投票

陈的回答是正确的迁移步骤。

我尝试重现您的问题。当我在 HomeController 中评论 Index page 方法时。我也面临着同样的问题。

所以您可能删除了 HomeController 中的“索引”操作。

enter image description here

enter image description here


0
投票

答案似乎是“管你的,重新开始。”

我尝试将项目代码复制到新的 .net 6 项目中——即将所有视图、控制器等复制到新项目并相应地更新新的 Program.cs 文件——但我仍然得到了同样的错误。然后我尝试将另一个 .net 5 项目转换为 .net 6,并再次遇到相同的错误。显然,转换是行不通的。

就这样吧。我不干了。我还有太多别的事要做,不用担心这个。不管怎样,感谢那些回复这篇文章的人试图帮助解决这个问题。


0
投票

我也遇到了同样的问题,我将Visual Studio更新到最新版本,问题解决了!

© www.soinside.com 2019 - 2024. All rights reserved.