C# 应用程序部署后,在StartUp.cs中只运行一次函数

C# 应用程序部署后,在StartUp.cs中只运行一次函数,c#,iis,.net-core,asp.net-core-mvc,asp.net-core-2.1,C#,Iis,.net Core,Asp.net Core Mvc,Asp.net Core 2.1,我正在开发ASP.NET core 2.2 web应用程序。我希望每次在Startup.cs文件中部署应用程序后只运行一次函数 此函数会减慢应用程序的速度,因为它会在应用程序启动时执行一些繁重的检查。我只想在每次部署应用程序时运行一次 这是密码 SynapseCore.Services.Plugins.SiteContentDiscovery iCont = new SiteContentDiscovery(); _logger.LogInformation("Star

我正在开发ASP.NET core 2.2 web应用程序。我希望每次在Startup.cs文件中部署应用程序后只运行一次函数

此函数会减慢应用程序的速度,因为它会在应用程序启动时执行一些繁重的检查。我只想在每次部署应用程序时运行一次

这是密码


SynapseCore.Services.Plugins.SiteContentDiscovery iCont = new SiteContentDiscovery();
            _logger.LogInformation("Startup - Complete : SiteContentDiscovery", new object[0]);

            SynapseCore.Shared.GlobalData.pluginList = pluginsInfoList;
            _logger.LogInformation("Startup - Complete : pluginList", new object[0]);

            iCont.SetPluginInfo(pluginsInfoList);
            _logger.LogInformation("Startup - Complete : SetPluginInfo", new object[0]);

        //The following function 'CheckDatabaseIntegrity' is to be run once after deployment. 
           iCont.CheckDatabaseIntegrity();
          _logger.LogInformation("Startup - Complete : CheckDatabaseIntegrity", new object[0]);

            iCont.CheckPluginStatus();
            _logger.LogInformation("Startup - Complete : CheckPluginStatus", new object[0]);

            PluginSiteComposedData composedData = iCont.CompileSiteDataList();

我已经调查过了

Environment.GetEnvironmentVariables() 

但似乎没有我想要的属性


我的问题是,如何通过代码检测应用程序在IIS上部署后是否第一次运行?

您只需存储并检查程序集版本即可。如果它增加了,您可以假设您部署了一个新版本


但是,每次要部署新版本时,您还必须在项目属性中增加它。

您可以发布相关的代码吗?:)@派对戒指。。我已经添加了代码。谢谢。把文件写到你的网站目录怎么样?在第一次运行时写入文件,然后在每次运行时检查文件是否存在,并且仅在文件不存在时执行该操作。由于它实际上不是您项目的一部分,因此对于新发布的应用程序,它将不存在。显然,您希望从源代码管理中忽略它,这样您就不会意外地提交它了。@ChrisPratt,非常感谢,伙计,这看起来很有希望。我会试一试并给你反馈。再次感谢克里斯。它工作得很好。我不确定我是否能把你的评论标记为正确答案。如果您想让我标记,请告诉我如何标记。谢谢