ASP.NET 网络 API 启动问题
ASP.NET Web API Startup Questions
我正在使用 .NET 4.5.2 创建 ASP.NET Web API。 API 需要在启动时连接到 运行 空间。不过,我对这个 Startup.Configuration 方法实际上何时 运行 有疑问。当我启动网站或应用程序池时,它似乎没有 运行。似乎等到有人第一次尝试访问该网站时。这个对吗?此外,它似乎在随机时间再次 运行。 2小时、4小时、16小时后我都看到了运行。这真的没有任何意义。当这些方法应该 运行 时,有人可以为我澄清一下吗?另外,如果你有一个更好的地方来放置它们的建议,因为我希望它成为所有连接的共享 运行 空间,并且我希望它在任何人尝试连接到之前 运行 API。也许是一项单独的服务?
此外,ASP.NET CORE 是否值得研究?除了 IIS,我不需要它 运行,但是如果使用 CORE 有好处,我就可以很容易地切换。
public partial class Startup
{
public Cache GlobalCache;
public static PowershellRunspace PSRunspace;
public static ActiveDirectory ADObjects = new ActiveDirectory();
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
GlobalCache = new Cache();
AppLog log = new AppLog();
log.InfoLog("Starting PowerShell Runspace in Hangfire...", true);
GlobalConfiguration.Configuration.UseSqlServerStorage("Hangfire");
BackgroundJob.Enqueue(() => log.InfoLog("Hangfire started!", true));
BackgroundJob.Enqueue(() => ADObjects.Startup(true));
BackgroundJob.Enqueue(() => StaticRunspace.Start());
app.UseHangfireDashboard();
app.UseHangfireServer();
}
}
假设您是 运行 IIS 中的此应用程序(而不是 self-hosting),以下规则适用:
Configuration
方法在每次应用程序启动时运行一次。
- 应用程序延迟启动(在通过 HTTP/S 向它发出第一个请求时)。
- IIS 有一些影响应用程序的设置:
- 空闲超时。如果在 20 分钟内未通过请求访问该应用程序,则该应用程序将被卸载/置于离线状态。下一个请求再次启动它。
- 常规应用程序池回收。它只是通过每 1740 分钟回收应用程序池来直接重新启动应用程序。
因此,您看到的行为可能是由于应用程序访问不频繁以及 IIS 默认设置所致。如果您想查看或配置设置,您可以进入 IIS,右键单击您的应用程序池,然后选择高级设置。
我正在使用 .NET 4.5.2 创建 ASP.NET Web API。 API 需要在启动时连接到 运行 空间。不过,我对这个 Startup.Configuration 方法实际上何时 运行 有疑问。当我启动网站或应用程序池时,它似乎没有 运行。似乎等到有人第一次尝试访问该网站时。这个对吗?此外,它似乎在随机时间再次 运行。 2小时、4小时、16小时后我都看到了运行。这真的没有任何意义。当这些方法应该 运行 时,有人可以为我澄清一下吗?另外,如果你有一个更好的地方来放置它们的建议,因为我希望它成为所有连接的共享 运行 空间,并且我希望它在任何人尝试连接到之前 运行 API。也许是一项单独的服务?
此外,ASP.NET CORE 是否值得研究?除了 IIS,我不需要它 运行,但是如果使用 CORE 有好处,我就可以很容易地切换。
public partial class Startup
{
public Cache GlobalCache;
public static PowershellRunspace PSRunspace;
public static ActiveDirectory ADObjects = new ActiveDirectory();
public void Configuration(IAppBuilder app)
{
ConfigureAuth(app);
GlobalCache = new Cache();
AppLog log = new AppLog();
log.InfoLog("Starting PowerShell Runspace in Hangfire...", true);
GlobalConfiguration.Configuration.UseSqlServerStorage("Hangfire");
BackgroundJob.Enqueue(() => log.InfoLog("Hangfire started!", true));
BackgroundJob.Enqueue(() => ADObjects.Startup(true));
BackgroundJob.Enqueue(() => StaticRunspace.Start());
app.UseHangfireDashboard();
app.UseHangfireServer();
}
}
假设您是 运行 IIS 中的此应用程序(而不是 self-hosting),以下规则适用:
Configuration
方法在每次应用程序启动时运行一次。- 应用程序延迟启动(在通过 HTTP/S 向它发出第一个请求时)。
- IIS 有一些影响应用程序的设置:
- 空闲超时。如果在 20 分钟内未通过请求访问该应用程序,则该应用程序将被卸载/置于离线状态。下一个请求再次启动它。
- 常规应用程序池回收。它只是通过每 1740 分钟回收应用程序池来直接重新启动应用程序。
因此,您看到的行为可能是由于应用程序访问不频繁以及 IIS 默认设置所致。如果您想查看或配置设置,您可以进入 IIS,右键单击您的应用程序池,然后选择高级设置。