我想在将代码托管在IIS上时启动一些方法。到目前为止,我通过从global.asax application_start方法调用该方法来尝试了相同的方法。但是然后我必须在浏览器上打开一次api。
例如:-我有一个创建sql依赖关系的方法,我希望在IIS部署时立即激活它。现在我必须浏览api一次以激活sql依赖关系。
我正在使用框架4.5和MVC Web API
我不想使用窗口服务或任何控制台解决方案
请帮帮我!!!
答案 0 :(得分:1)
大多数服务被设计为无状态或延迟加载,以减少内存消耗,因此许多代码仅在需要时运行。对于不同版本的ASP.NET和MVC,有不同的代码可以进行预热。您能详细说明一下它是什么版本吗?它是什么模式,形式还是MVC? 5还是核心?
这是ASP.NET表单的官方示例: https://docs.microsoft.com/en-us/aspnet/web-forms/overview/data-access/caching-data/caching-data-at-application-startup-cs
通过System.Web.Hosting.IProcessHostPreloadClient
预加载IIS托管的old-version-.NET应用程序
这是示例:
https://weblogs.asp.net/scottgu/auto-start-asp-net-applications-vs-2010-and-net-4-0-series
对于MVC核心,
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.YourFunction(args) //< == add an extension to IWebHostBuilder do your work
.UseStartup<Startup>()
.Build();
}
在这里您可以了解更多信息: https://wildermuth.com/2017/07/06/Program-cs-in-ASP-NET-Core-2-0