OWINを使用すると、実際にはASP.NETコアモジュールを使用しないワーカープロセス内でIISでASP.NETコアを実行できます。
これは、ASP.NETコアcan be hosted on an OWIN serverとIIS can be made an OWIN Serverという事実のために可能です。
IIS上でASP.NETコアを実行する方法を示す次のOWINミドルウェアをご覧ください。より完全な例については、この要点: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();
}
}
OPは、コアアプリケーションを共有ホスティング環境のWebアプリケーションとして展開したいようです。彼らはWebサーバーを制御できません。彼らは自分自身をポート80にバインドするコンソールアプリケーションを展開するだけではありません。 – CodeCaster
はいCodeCasterが正しく、私はこの情報を見逃しましたが、IIS共有ホスティングに含める必要があります – DavWEB
まあ、今のところコア。 – DavWEB