gpt4 book ai didi

iis - 在没有 Kestrel 的 IIS 中托管 ASP.NET Core

转载 作者:行者123 更新时间:2023-12-03 18:41:43 26 4
gpt4 key购买 nike

我们的托管部门不愿意让 ASP.NET 核心托管与 Kestrel 运行甚至安装 ASP.NET Core Server Hosting Bundle (AspNetCore 模块)。

在这种情况下是否有任何替代方法可以允许 ASP.NET 核心?

环境:带有最新 IIS 和 .NET 4.6.2 的 Windows Server 2012 R2。

它是一个共享宿主环境,应用程序必须在 IIS 中运行。

最佳答案

您实际上可以使用 OWIN 在工作进程中的 IIS 中运行 ASP.NET Core(因此不使用 ASP.NET Core 模块)。

这是可能的,因为 ASP.NET Core can be hosted on an OWIN server和 IIS can be made an OWIN Server .

看看下面的 OWIN 中间件,它展示了如何在 IIS 上运行 ASP.NET Core。如需更完整的示例,请参阅以下要点:https://gist.github.com/oliverhanappi/3720641004576c90407eb3803490d1ce .

public class AspNetCoreOwinMiddleware<TAspNetCoreStartup> : OwinMiddleware, IServer
where TAspNetCoreStartup : class
{
private readonly IWebHost _webHost;
private Func<IOwinContext, Task> _appFunc;

IFeatureCollection IServer.Features { get; } = new FeatureCollection();

public AspNetCoreOwinMiddleware(OwinMiddleware next, IAppBuilder app)
: base(next)
{
var appProperties = new AppProperties(app.Properties);
if (appProperties.OnAppDisposing != default(CancellationToken))
appProperties.OnAppDisposing.Register(Dispose);

_webHost = new WebHostBuilder()
.ConfigureServices(s => s.AddSingleton<IServer>(this))
.UseStartup<TAspNetCoreStartup>()
.Build();

_webHost.Start();
}

void IServer.Start<TContext>(IHttpApplication<TContext> application)
{
_appFunc = async owinContext =>
{
var features = new FeatureCollection(new OwinFeatureCollection(owinContext.Environment));

var context = application.CreateContext(features);
try
{
await application.ProcessRequestAsync(context);
application.DisposeContext(context, null);
}
catch (Exception ex)
{
application.DisposeContext(context, ex);
throw;
}
};
}

public override Task Invoke(IOwinContext context)
{
if (_appFunc == null)
throw new InvalidOperationException("ASP.NET Core Web Host not started.");

return _appFunc(context);
}

public void Dispose()
{
_webHost.Dispose();
}
}

关于iis - 在没有 Kestrel 的 IIS 中托管 ASP.NET Core,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42510623/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com