C# 使用app.config配置卷影副本

C# 使用app.config配置卷影副本,c#,service,appdomain,appdomainsetup,C#,Service,Appdomain,Appdomainsetup,让我先解释一下情况 我已经从一个安装群安装了多个服务副本(比如10个)。现在我想更新一个dll。我需要停止所有服务,更新dll并重新启动服务 为了避免这种情况,我在代码中使用了阴影复制。这样就可以在不停止所有服务的情况下更新DLL。具体如下 static void Main(string[] args) { AppDomain.CurrentDomain.SetCachePath(@"C:\Cache"); AppDomain.CurrentDomain.SetShadowCop

让我先解释一下情况

我已经从一个安装群安装了多个服务副本(比如10个)。现在我想更新一个dll。我需要停止所有服务,更新dll并重新启动服务

为了避免这种情况,我在代码中使用了阴影复制。这样就可以在不停止所有服务的情况下更新DLL。具体如下

static void Main(string[] args)
{
    AppDomain.CurrentDomain.SetCachePath(@"C:\Cache");
    AppDomain.CurrentDomain.SetShadowCopyPath(AppDomain.CurrentDomain.BaseDirectory);
    AppDomain.CurrentDomain.SetShadowCopyFiles();

    ServiceBase[] ServicesToRun;
    ServicesToRun = new ServiceBase[] 
        { 
            new SampleService(serviceName) 
        };
    ServiceBase.Run(ServicesToRun);
}
现在,我正试图通过Asp.Net中的app.config文件实现同样的功能,如下所示

<hostingEnvironment 
    idleTimeout="Infinite" 
    shutdownTimeout="30" 
    shadowCopyBinAssemblies="true" />


有什么建议吗?

ASP.Net托管环境内置了管理应用程序回收的支持

Windows.Net服务使用不支持此功能的标准CLR主机。你必须实现你自己的

  • 创建一个子
    AppDomain
    来托管服务代码,并配置卷影复制
  • 使用类似于
    FileSystemWatcher
    的工具来监视原始bin目录
  • 当文件更改时,请拆下您的
    AppDomain
    ,创建一个新的并重新加载

  • ASP.Net主机可以按照这些方式执行某些操作(但也可以管理现有请求,在执行过程中对新请求排队,等等)

    你根本没说这个问题。你有什么问题吗?请不要让我们尝试您的代码,让我们讨论这个问题。我正在尝试单独使用配置文件实现卷影复制,就像ASP.net所做的那样。。没有在代码中创建应用程序域。。。我被卡住了。。。