如何在IIS中託管應用程序的內部?檢查Asp.Net(核心)應用程序是否託管在IIS中
3
A
回答
0
我相信沒有直接的方法來實現這種開箱即用的功能。至少我沒有找到一個。正如我所知道的,事實上,ASP.NET Core應用程序實際上是一個獨立的應用程序,對它的父上下文一無所知,除非後者會顯示有關它自己的信息。
例如在配置文件中,我們可以知道我們正在運行的是哪種安裝類型:production
或development
。我們可以假設production
是IIS
,而development
不是。但是,這並沒有爲我工作。由於我的生產設置可能是IIS
或windows service
。
所以我已經通過向我的應用程序提供不同的命令行參數來解決此問題,具體取決於它應該執行的運行類型。實際上,這對我來說很自然,因爲windows service
確實需要不同的方法來運行。
例如在我的情況的代碼看起來有點像這樣:
namespace AspNetCore.Web.App
{
using McMaster.Extensions.CommandLineUtils;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Hosting.WindowsServices;
using System;
using System.Diagnostics;
using System.IO;
public class Program
{
#region Public Methods
public static IWebHostBuilder GetHostBuilder(string[] args, int port) =>
WebHost.CreateDefaultBuilder(args)
.UseKestrel()
.UseIISIntegration()
.UseUrls($"http://*:{port}")
.UseStartup<Startup>();
public static void Main(string[] args)
{
var app = new CommandLineApplication();
app.HelpOption();
var optionHosting = app.Option("--hosting <TYPE>", "Type of the hosting used. Valid options: `service` and `console`, `console` is the default one", CommandOptionType.SingleValue);
var optionPort = app.Option("--port <NUMBER>", "Post will be used, `5000` is the default one", CommandOptionType.SingleValue);
app.OnExecute(() =>
{
//
var hosting = optionHosting.HasValue()
? optionHosting.Value()
: "console";
var port = optionPort.HasValue()
? new Func<int>(() =>
{
if (int.TryParse(optionPort.Value(), out var number))
{
// Returning successfully parsed number
return number;
}
// Returning default port number in case of failure
return 5000;
})()
: 5000;
var builder = GetHostBuilder(args, port);
if (Debugger.IsAttached || hosting.ToLowerInvariant() != "service")
{
builder
.UseContentRoot(Directory.GetCurrentDirectory())
.Build()
.Run();
}
else
{
builder
.UseContentRoot(Path.GetDirectoryName(Process.GetCurrentProcess().MainModule.FileName))
.Build()
.RunAsService();
}
});
app.Execute(args);
}
#endregion Public Methods
}
}
此代碼不僅允許選擇類型的主機(service
和console
- 該選項IIS
應該使用),也允許當您作爲Windows服務運行時,更改端口是非常重要的。
另一件好事是使用參數解析庫,McMaster.Extensions.CommandLineUtils
- 它將顯示有關配置的命令行開關的信息,因此可以很容易地選擇正確的值。
相關問題
- 1. 託管ASP.NET核心應用程序
- 2. 如何在IIS中的in-proc中託管asp.net核心應用程序?
- 3. IIS和託管的ASP.Net應用程序
- 4. 檢查任何用戶是否訪問IIS中託管的Web應用程序
- 5. 在IIS中託管WCF應用程序
- 6. 在沒有Kestrel的IIS中託管ASP.NET核心
- 7. .net核心應用程序無法通過FTP上傳,託管在IIS上
- 8. 無法在IIS中託管ASP.NET MVC應用程序
- 9. .NET核心的ASP.NET vNext可以託管在IIS之外嗎?
- 10. 託管asp.net應用程序
- 11. Asp.Net核心MVC應用程序IIS中的Windows身份驗證
- 12. 在IIS上部署ASP.Net核心1應用程序(404錯誤)
- 13. ASP.NET核心符號在哪裏託管?
- 14. 如何讓我的ASP.NET核心應用程序使用WebListener和Windows身份驗證在IIS下託管?
- 15. Asp.Net IIS託管
- 16. ASP.NET核心Web應用程序中
- 17. Windows IoT核心是否運行.NET核心應用程序?
- 18. 託管在ASP.NET Web應用程序powershell
- 19. 在ASP.NET核心如何檢查請求是否是本地的?
- 20. 監視IIS 6.0上託管的ASP.NET應用程序?
- 21. 自託管Web應用程序與IIS託管?
- 22. 託管在IIS(Windows 10)上時無法在Web應用程序中託管LocalDB
- 23. asp.net託管與iis
- 24. IIS託管,asp.net mvc
- 25. 當從IIS託管的MVC應用程序調用時,Context.User在自託管的SignalR中心爲空
- 26. 託管ASP.Net MVC在IIS
- 27. 403.14 - 發佈Asp.Net核心應用程序
- 28. VS2017 ASP.NET核心Web應用程序
- 29. ASP.NET核心MVC應用程序設置
- 30. ASP.NET核心Web應用程序是否針對完整的dotnet框架在IIS中工作?