在 IIS 上托管 Asp.Net Core 2
Hosting Asp.Net Core 2 on IIS
我的应用程序在 ApplicationName 和 IISExpress 中通过 Visual Studio 以 Release/Debug 模式启动时运行良好。
但是一旦部署到 IIS 并启动,我就无法访问主页(主控制器)并且还有导航栏问题和 JQuery 问题。我已经在 Debug/Release 两种模式下发布了该应用程序,但无济于事。
我的问题主要是如何解决这个问题?该应用程序应该 运行 与它在 iisexpress 上本地 运行 的方式相同,对吗?即使文件丢失(如 debug/release env),Home 控制器也应该可以访问,对吗?
非常感谢任何帮助,并等待 post 更多信息和基于评论的日志。
编辑 1(包括 Startup.cs):
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.DependencyInjection;
using MTAClassLib.Configuration;
using System.IO;
namespace MTALib
{
public class Program
{
public static void Main(string[] args)
{
var host = BuildWebHost(args);
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
var RoleManager = services.GetRequiredService<RoleManager<IdentityRole>>();
UserRoleSeed.Seed(RoleManager).Wait();
}
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.Build();
}
}
ASP.NET Core 2.0 的托管与 ASP.NET 中的托管略有不同。
你需要Install the .NET Core Hosting Bundle
此外,请确保您的应用程序池 >> .NET CLR 版本 应该是无托管代码
详情请参考Host ASP.NET Core on Windows with IIS
我在 IIS 上使用 ASP.Net Core 2 运行 时遇到了同样的问题。我不得不
- 安装 .NET Core 托管包。如果您还没有下载,可以下载 https://aka.ms/dotnetcore-2-windowshosting。
- 运行 安装 Hosting Bundle
后在命令行 window 中重置 IIS
确保您的 project.cs BuildWebHost 方法如下所示
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.UseStartup<Startup>()
.Build();}
我不必将应用程序池更改为 .NET CLR 版本到 "No Managed Code"。它仍然是“.Net CLR 版本 v4.0.30319”
- 编辑 web.config 并将 stdoutLogEnabled 更改为 true。
- 在发布的文件夹中手动创建日志文件夹。
这解决了我的问题。
安装 "dotnet-hosting-2.1.2-win.exe" 并重置 IIS 已解决我的问题。
我的应用程序在 ApplicationName 和 IISExpress 中通过 Visual Studio 以 Release/Debug 模式启动时运行良好。
但是一旦部署到 IIS 并启动,我就无法访问主页(主控制器)并且还有导航栏问题和 JQuery 问题。我已经在 Debug/Release 两种模式下发布了该应用程序,但无济于事。
我的问题主要是如何解决这个问题?该应用程序应该 运行 与它在 iisexpress 上本地 运行 的方式相同,对吗?即使文件丢失(如 debug/release env),Home 控制器也应该可以访问,对吗?
非常感谢任何帮助,并等待 post 更多信息和基于评论的日志。
编辑 1(包括 Startup.cs):
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Identity;
using Microsoft.Extensions.DependencyInjection;
using MTAClassLib.Configuration;
using System.IO;
namespace MTALib
{
public class Program
{
public static void Main(string[] args)
{
var host = BuildWebHost(args);
using (var scope = host.Services.CreateScope())
{
var services = scope.ServiceProvider;
var RoleManager = services.GetRequiredService<RoleManager<IdentityRole>>();
UserRoleSeed.Seed(RoleManager).Wait();
}
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.UseKestrel()
.UseContentRoot(Directory.GetCurrentDirectory())
.UseIISIntegration()
.Build();
}
}
ASP.NET Core 2.0 的托管与 ASP.NET 中的托管略有不同。
你需要Install the .NET Core Hosting Bundle
此外,请确保您的应用程序池 >> .NET CLR 版本 应该是无托管代码
详情请参考Host ASP.NET Core on Windows with IIS
我在 IIS 上使用 ASP.Net Core 2 运行 时遇到了同样的问题。我不得不
- 安装 .NET Core 托管包。如果您还没有下载,可以下载 https://aka.ms/dotnetcore-2-windowshosting。
- 运行 安装 Hosting Bundle 后在命令行 window 中重置 IIS
确保您的 project.cs BuildWebHost 方法如下所示
public static IWebHost BuildWebHost(string[] args) => WebHost.CreateDefaultBuilder(args) .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseIISIntegration() .UseStartup<Startup>() .Build();}
我不必将应用程序池更改为 .NET CLR 版本到 "No Managed Code"。它仍然是“.Net CLR 版本 v4.0.30319”
- 编辑 web.config 并将 stdoutLogEnabled 更改为 true。
- 在发布的文件夹中手动创建日志文件夹。
这解决了我的问题。
安装 "dotnet-hosting-2.1.2-win.exe" 并重置 IIS 已解决我的问题。