首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为ASP.NET WebForms Web应用程序中的所有用户保持一个interop office应用程序处于活动状态(直到IIS重新启动

在ASP.NET WebForms Web应用程序中,要保持一个interop office应用程序处于活动状态直到IIS重新启动,可以采取以下步骤:

  1. 在ASP.NET Web应用程序中,创建一个全局静态变量来存储interop office应用程序的实例。这样可以确保应用程序的所有用户共享同一个实例。
  2. 在应用程序的启动事件中,实例化interop office应用程序,并将其赋值给全局静态变量。例如,在Global.asax文件的Application_Start事件中添加以下代码:
代码语言:csharp
复制
protected void Application_Start(object sender, EventArgs e)
{
    // 实例化interop office应用程序
    var officeApp = new Microsoft.Office.Interop.Excel.Application();

    // 将应用程序实例赋值给全局静态变量
    OfficeAppManager.OfficeAppInstance = officeApp;
}
  1. 创建一个自定义的HttpModule,用于在每个请求开始和结束时检查interop office应用程序的状态。在请求开始时,检查全局静态变量是否为空,如果为空,则重新实例化interop office应用程序并赋值给全局静态变量。在请求结束时,确保释放interop office应用程序的资源。以下是一个简单的示例:
代码语言:csharp
复制
public class OfficeAppModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.BeginRequest += OnBeginRequest;
        context.EndRequest += OnEndRequest;
    }

    private void OnBeginRequest(object sender, EventArgs e)
    {
        // 检查全局静态变量是否为空
        if (OfficeAppManager.OfficeAppInstance == null)
        {
            // 实例化interop office应用程序
            var officeApp = new Microsoft.Office.Interop.Excel.Application();

            // 将应用程序实例赋值给全局静态变量
            OfficeAppManager.OfficeAppInstance = officeApp;
        }
    }

    private void OnEndRequest(object sender, EventArgs e)
    {
        // 释放interop office应用程序的资源
        if (OfficeAppManager.OfficeAppInstance != null)
        {
            OfficeAppManager.OfficeAppInstance.Quit();
            Marshal.ReleaseComObject(OfficeAppManager.OfficeAppInstance);
            OfficeAppManager.OfficeAppInstance = null;
        }
    }

    public void Dispose()
    {
    }
}
  1. 在Web.config文件中注册自定义的HttpModule。在<system.web>节点下添加以下配置:
代码语言:xml
复制
<httpModules>
  <add name="OfficeAppModule" type="YourNamespace.OfficeAppModule" />
</httpModules>
  1. 确保在IIS重新启动时,全局静态变量会被重置为空。可以在Global.asax文件的Application_End事件中添加以下代码:
代码语言:csharp
复制
protected void Application_End(object sender, EventArgs e)
{
    // 释放interop office应用程序的资源
    if (OfficeAppManager.OfficeAppInstance != null)
    {
        OfficeAppManager.OfficeAppInstance.Quit();
        Marshal.ReleaseComObject(OfficeAppManager.OfficeAppInstance);
        OfficeAppManager.OfficeAppInstance = null;
    }
}

通过以上步骤,可以在ASP.NET WebForms Web应用程序中保持一个interop office应用程序处于活动状态,直到IIS重新启动。请注意,这只是一个简单的示例,实际应用中可能需要更多的错误处理和资源管理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

神秘APT组织锁定(IIS)Web服务器,擅长规避恶意软件检测

Praying Mantis利用的漏洞就是针对ASP.NET中的反序列化实现,ASP.NET是一种用于开发托管在Windows IIS Web服务器上的Web应用程序的开源框架。...ASP.NET允许应用程序将用户会话作为序列化对象存储在MSSQL数据库中,然后为它们分配唯一的cookie。...为IIS量身定制的恶意软件框架 黑客利用这些RCE漏洞反射性地将恶意DLL加载到易受攻击的Web服务器的内存中。然后,这个DLL又反射性地加载了一个恶意软件组件。...研究人员表示, “如果您的 Web 应用程序使用ASP.NET会话状态,请确保只能从合法的网络位置访问数据库。...尽可能在不同的IIS服务器/Web应用程序之间分离会话状态MSSQL数据库,或者使用适当的最小CRUD权限创建不同的SQL用户。

1.8K40

架构探索之会话状态、Web Farm、负载均衡器

使用会话的状态管理是最好的ASP.NET功能之一,因为它是安全的,对用户是透明的,我们可以在其中存储任何类型的对象。...该服务器可能运行在同一个系统上,但它不在运行Web应用程序的主应用程序域。这意味着如果你重新启动你的ASP.NET进程,你的会话数据将仍然存在。...如图所示,在IIS中,可能有多个应用程序池,每个应用程序池至少有一个工作进程。Web Garden应该包含多个工作进程。 在Web应用程序中使用Web Garden有一定的限制。...在我的例子中,我也解释了如果你重新启动IIS,你仍然可以访问你的会话数据。...StateServer:我已经解释了状态服务器是什么以及如何配置状态服务器等等。对于Web场景,您可以轻松了解这一点的重要性,因为所有会话数据都将存储在一个位置。 ?

1.4K30
  • ASP.NET Core: 全新的ASP.NET !

    System.Web 主机与 IIS 耦合度很高,所以要想运行在另一台主机上会非常困难。 后来 OWIN 作为应用程序和 Web 服务器中间的接口出现。...Microsoft 开发了 Katana 作为一个 OWIN 的实现,可以部署 ASP.NET Web API, SignalR 和其他第三方框架,这些框架可以在 IIS 和 IIS Express,...动态的Web开发 Visual Studio 2015 中另一个非常酷的特性就是支持动态编译。在过去的 ASP.NET 中,当我们修改了应用的后台代码,我们需要重新编译并且运行才能看到页面的变化。...2 SignalR 3 ASP.NET Core 也是以 SignalR 3 为基础,这使得你可以向云连接的应用程序添加实时功能。... ComponentOne Studio for Asp.net MVC,它兼容 ASP.NET Core RC2 版本,是一款快速轻量级的控件来满足用户的所有需求。

    11.4K101

    C#进阶-ASP.NET WebForms调用ASMX的WebService接口

    简答来说,就是 ASP.NET 提供的 Web 接口文件。2、WebService 接口我们可以 在ASMX 文件中创建 WebService 接口, 定义 Web 服务提供的具体功能。...二、创建ASMX的WebService接口1、创建 ASP.NET WebForms 项目Visual Studio 2019 应用内新建项目,选择 ASP.NET Web应用程序(.NET Framework...选择 Web Forms,取消右侧 为 HTTPS 配置 的选项。项目创建成功,目录如下:我们点击上方 IIS Express 按钮,启动一下项目,看看是否能顺利运行。启动成功。...以下是使用 Postman 调用 Add 方法的示例步骤:打开 Postman,创建一个新的请求;设置请求类型为 GET 或 POST;输入 Web 服务的 URL,例如:http://localhost...ASMX 文件在 ASP.NET WebForms 中提供了创建 Web 服务的便捷方式,通过公开 Web 方法,允许远程客户端调用这些方法并获取数据。

    40445

    ASP.NET里的Session详细解释

    另外,重起或者关闭IIS服务都会造成信息的丢失。 Session状态使用范围的局限性:刚一个用户从一个网站访问到另外一个网站时,这些Session信息并不会随之迁移过去。...其中服务器配置文件会对IIS服务器下所有的站点中的所有应用程序起作用。...如果你的网站有且只有一个Web应用程序,一般说来应用程序的根目录就是/Inetpub/wwwroot。如果想添加一个Web应用程序,在IIS中添加一个具有应用程序起始点的虚拟目录就行了。...这个目录下的文件及目录将被视为一个Web应用程序。但是,这样通过IIS添加Web应用程序是不会为你生成Web.config文件的。...在ASP.NET中,Web.config修改保存后会自动立刻成效,不用再像ASP中的配置文件修改后需要重新启动Web应用程序才能生效了。

    1.3K20

    windowServer_windowsserver是什么

    AppFabric 缓存功能向 Windows Server 添加了一个分布式的内存中对象缓存,它使扩展高性能 .NET 应用程序(特别是 ASP.NET 应用程序)变得更加容易。   ...同时,由于按需激活和进程回收,因此托管长期运行进程(例如,IIS 和 WAS 中的工作流)十分具有挑战。如果应用程序要求,则状态暂留和主机激活必须由开发人员明确配置。...AppFabric 可在系统故障或重新启动时,通过使用暂留提供程序实现上述目标,该提供程序允许 WF 服务将其状态保存到暂留数据库中,然后在正常系统上继续执行。   ...从应用程序收集的信息可通过使用跟踪配置文件来进行自定义,使用跟踪配置文件可以捕获信息,例如活动状态(启动、停止和错误)、工作流内特定变量的内容或者应用程序通过使用自定义跟踪记录发出的自定义跟踪信息。...在下图中,命名缓存跨群集中的所有缓存主机,但区域仅限于群集中的一个缓存主机。 命名缓存   命名缓存也称为缓存,是一个可配置的内存中存储单元,所有应用程序都使用该单元将数据存储在分布式缓存中。

    1.8K100

    IIS 7.0探索用于 Windows Vista 的 Web 服务器和更多内容

    IIS 7.0 的核心是一个完全模块化的 Web 服务器,它由 40 多项功能组成,这些功能可以组合成一个针对在应用程序拓扑中的所需角色经过优化的小型 Web 服务器。...通过让基于 .NET Framework 的应用程序轻松访问 IIS 配置及状态信息,为编写基于 .NET 的安装和管理应用程序,甚至是直接从 ASP.NET 页执行管理任务,提供了可能。...在直到 6.0 版的 IIS 版本中,ASP.NET 均作为独立的应用程序框架连接到 Web 服务器。...新的 URL 授权功能从 ASP.NET URL 授权功能发展而来,可以用于为整个应用程序配置声明性访问控制规则。利用这些访问规则可以根据用户名和角色允许或拒绝对应用程序中对 URL 的访问。...此功能称为运行库状态和控制 API,或 RSCA(读作“reeska”),它可以公开站点和应用程序池的活动状态、运行中的工作进程,甚至允许您查看当前正在服务器上执行的请求。

    5.1K90

    Asp.net管道模型(管线模型)之一发不可收拾

    上图左边为IIS5.X WEB SERVER,右边为Asp.net Application的工作进程(worker process),Asp.net是以作为IIS组件的形式扩展IIS的。   ...server类型):1.开始->所有程序->管理工具->服务->开启 Asp.net状态服务,然后配置一下网站的web.config为Web Garden模式下一个Application对应一个应用程序池,对应一个工作进程,6.x开始工作进程从Aspnet_wp改为w3wp;在Web Garden模式下一个Application对应一个应用程序池...IIS5.x中识别请求属于哪个Application是在工作进程中在用户模式下实现的,而IIS6.x是由Web Server的http.sys在核心模式实现的(IIS5.x的是Aspnet_isapi.dll...一般地,用户程序运行在User mode下,而操作系统代码运行在Kernel Mode下。Kernel Mode的代码允许访问所有系统内存和所有CPU指令。

    2.4K90

    AppFabric 版本区分

    KB983484 您必须安装 KB983484 以防止在启动包含 IIS 7.5 中的多个应用程序的网站时意外预加载某些服务。安装此项目后,可能需要重新启动计算机。...KB983484 您必须安装 KB983484 以防止在启动包含 IIS 7.5 中的多个应用程序的网站时意外预加载某些服务。安装此项目后,可能需要重新启动计算机。...AppFabric 是一组集成技术,可更轻松地生成、扩展和管理 IIS 上运行的 Web 应用程序和复合应用程序。...为您轻松生成和管理复合应用程序提供了全新功能,包括: Visual Studio 中增强的设计和开发工具,可生成功能强大的复合应用程序 通过与 IIS Manager 和 Windows PowerShell...此版本中已添加下列 AppFabric 缓存功能: Read-through(同步读取)和 write-behind(事后写入)提供程序支持 正常关闭 域帐户支持 新 ASP.NET 会话状态和输出缓存提供程序

    89320

    Windowsapp_windowsserver是什么

    缓存服务提供了全面且完全备案的 API 集,以将内存中缓存使用与基于 .NET 的应用程序集成。 此外,与 ASP.NET 的无缝集成支持在缓存中存储会话状态。...您可以使用自己选择的自定义暂留存储。 而且,AppFabric 托管管理为您提供了监控暂留数据库中活动所需的工具,或长期运行的工作流。...在将监控应用程序的执行成本保持在一个适当水平的同时,还可以灵活更改生成数据的查询,以及选择监控级别,以使您能够收集足够的数据来监控应用程序的运行状况。...必要时,可以恢复、挂起、取消或终止暂留的工作流实例以及启动或停止服务。 由于用户界面基于 IIS Manager,因此基于 WCF 和 WF 的服务的管理员体验和工具与 Web 应用程序的类似。...在 IIS Manager 的 AppFabric 扩展中,可以轻松枚举某台服务器上的服务,并可以轻松更改查询以调整数据。 可以看到处于运行状态或非运行状态的工作流实例的数量。

    1K30

    Web开发在过去20多年时间里如何改变了我

    2001年,我开始陶醉于ASP.NET和VB.NET,并用到了产品中,直到2006年底才不再这么干。2007年年底,我开始使用C#编写ASP.NET。...ASP.NET MVC出现了,web这个东西开始再次比ASP.NET WebForms感受更自然点。从一个ASP.NET开发人员的角度来看,web开始变得更好:更加干净、灵活、轻便和自然。...第一个单页应用程序框架(对不起,我不想提蹩脚的ASP.NET AJAX…)出现了,UI逻辑从服务器转移到了客户端。...这也就是说使用无状态的web工作,而不是试图修复它。使用Request和Response比传统的ASP.NET MVC工作起来更直接,比ASP.NET WebForms甚至就更直接得多。...几个星期前,我启动了我第一个真正的NodeJS项目:一个使用NodeJS来为用户提供高度灵活脚本运行时的桌面应用程序。

    1.5K60

    【ASP.NET Core 基础知识】--部署和维护--部署ASP.NET Core应用程序

    配置应用程序池:在IIS中创建一个新的应用程序池,并确保其目标.NET CLR版本为“无托管代码”(No Managed Code),以便支持托管在IIS上的ASP.NET Core应用程序。...配置IIS站点:在IIS中创建一个新的站点,并将站点的物理路径指向之前发布的应用程序的目录。...创建Web App服务:在Azure门户中创建一个新的Web App服务,选择合适的定价层和资源规格。 配置应用程序设置:在Web App的设置中,配置应用程序的环境变量、连接字符串等信息。...对输出的内容进行HTML编码,确保用户输入不会被解释为HTML标签和脚本。...更新和维护 定期更新 定期更新应用程序的依赖项和组件,确保应用程序使用的软件和库处于最新的安全状态。 安全配置 配置安全性功能和设置,确保应用程序的安全配置符合最佳实践和安全标准。

    32300

    IIS执行原理

    因此,HTTP.SYS不会受到用户代码的影响,它始终处于稳定运行状态,对用户的http请求进行监听,并及时作出反应。...IIS处理 W3SVC W3SVC服务是一个独立运行的程序,寄宿在svchost.exe进程中,负责用户的参数监视和重新启动应用池的工作。...3-1. w3wp.exe会根据IIS中ISAPI扩展读取对应的处理的Dll,用asp.net举例:当用户访问的网站是asp.net平台,则 类型是.cshtml和.aspx文件类型。...IIS中应用程序的映射: ? IIS中处理流程: ? 3-2. 当ISAPI加载后,会启动一个ASP.NET的工作进程,把信息的控制权交给Asp.Net来处理。...说到这里,把IIS请求的流程简单的做了说明,后面的工作就由Asp.Net去完成了。 .Net程序的运行过程 说到Asp.Net的运行,不得不先说下.Net的运行机制(算是为后面的文章做一个铺垫)。

    2.2K21

    IIS 5.x与ASP.NET

    对于寄宿于IIS 5.x的所有Web 应用都运行在同一个进程(工作进程Aspnet_wp.exe)的不同AppDomain中。...,尽管采用性能最好的命名管道,但是仍然会带来性能的瓶颈; 所有的ASP.NET应用,运行在相同的进程(aspnet_wp.exe)中的不同的应用程序域(AppDomain)中,基于应用程序域的隔离级别不能从根本上解决一个应用程序对另一个程序的影响...HTTP.SYS能够带来如下的好处: 持续监听:由于HTTP.SYS是一个网络驱动程序,始终处于运行状态,对于用户的HTTP请求,能够及时作出反应; 更好的稳定性:HTTP.SYS运行在操作系统内核模式下...IIS 6引入了应用程序池的概念,一个工作进程对应着一个应用程序池。一个应用程序池可以承载一个或者多个Web应用,每个Web应用映射到一个IIS虚拟目录。...对于后续的请求,空闲的HttpApplication对象会从池中取出,如果池中所有的HttpApplication对象都处于繁忙的状态,ASP.NET会创建新的HttpApplication对象。

    2.8K20

    Visual Studio 调试系列12 远程调试部署在远程计算机IIS上的ASP.NET应用程序

    如果需要帮助,确保您的应用程序设置已完成,部署,并正确运行在 IIS 中,以便可以调试,请按照本主题中的所有步骤。...在“角色服务”步骤中,选择所需 IIS 角色服务,或接受提供的默认角色服务 。 如果你想要启用部署使用的发布设置和 Web 部署,请确保IIS 管理脚本和工具处于选中状态。...可以使用ipconfig获取 IPv4 地址的命令行中。 勾选“显示所有用户的进程” 。 键入进程名称,可以快速找到的第一个字母w3wp.exe为 ASP.NET 4.5。...如果有多个进程显示w3wp.exe,检查用户名列。 在某些情况下,用户名列显示你的应用程序池名称,如IIS APPPOOL\DefaultAppPool。...如果你看到应用程序池标识正确的进程的简单办法是创建一个新应用池命名为你想要调试的应用程序实例,然后您可以找到它轻松地在用户名列。 ? 单击“附加” 打开远程计算机的网站。

    4K10

    添加config文件_config配置文件

    在我们在进行web应用程序的开发,测试 部署的过程中,有三个配置文件也需要我们去很好的认识,并牢记他们。...所以从文件名称我们就可以推测出,这个文件中所这是的所有信息, 是给整台服务器内的所有web应用程序的。...比如我们有一个商城活动应用程序,我们需要设定 一个可控的商城活动起始时间和结束时间,我们可以在此进行设置。 system.Web: 控制Asp.net运行时的行为....HttpHandler: Handler自定义设置,或者添加自定义Handler ApplicationHost.config IIS为我们提供了一个高度集成的Web应用程序平台,用来管理并运行我们的...而对于iis7.0+ 使用applicationHost.config 为web服务器和进程保存IIS配置。

    1.8K30

    WCF技术剖析之二:再谈IIS与ASP.NET管道

    对于寄宿于IIS 5.x的所有Web 应用都运行在同一个进程(工作进程Aspnet_wp.exe)的不同AppDomain中。...,尽管采用性能最好的命名管道,但是仍然会带来性能的瓶颈; 所有的ASP.NET应用,运行在相同的进程(aspnet_wp.exe)中的不同的应用程序域(AppDomain)中,基于应用程序域的隔离级别不能从根本上解决一个应用程序对另一个程序的影响...HTTP.SYS能够带来如下的好处: 持续监听:由于HTTP.SYS是一个网络驱动程序,始终处于运行状态,对于用户的HTTP请求,能够及时作出反应; 更好的稳定性:HTTP.SYS运行在操作系统内核模式下...IIS 6引入了应用程序池的概念,一个工作进程对应着一个应用程序池。一个应用程序池可以承载一个或者多个Web应用,每个Web应用映射到一个IIS虚拟目录。...对于后续的请求,空闲的HttpApplication对象会从池中取出,如果池中所有的HttpApplication对象都处于繁忙的状态,ASP.NET会创建新的HttpApplication对象。

    1.6K110

    Windows 2008 R2 Server Core .NET环境配置

    Windows Server 2008 R2的ServerCore包含了.NETFramework2.0/3.0/3.5的子集,这使得ServerCore几乎可以支持ASP.NET的所有特性,但是还有一些限制需要注意...现在Server Core服务器已经可以支持ASP.NET应用,但是,现在ServerCore中并没有Windows 2008那样具有GUI的IIS管理控制台,这时候如果用户需要创建Web站点和Web应用...远程管理服务已经安装好,但是需要注意的是默认情况下服务是处于停止状态的,如果需要IIS远程管理服务进入开启状态,需要通过netstart命令启用,这点非常重要: net start wmsvc 现在我们可以通过远程计算机管理...上述安装过程中,服务器只支持64位的应用程序,我们还存在大量的32位应用程序,在Server Core上启用32为应用程序的支持也很简单,32为应用程序的支持是通过WOW64,可以通过以下命令进行安装:...支持32位的应用程序的,需要在IIS的应用程序池上启用32为应用程序的支持。

    3.1K60

    C# .NET面试系列八:ADO.NET、XML、HTTP、AJAX、WebService(二)

    2、Session概念: Session 表示用户的会话状态。每个用户都有一个独立的 Session,用于存储用户特定的信息。用途: 用于在用户请求之间保持状态,存储用户登录信息、购物车内容等。...它是一个全能的对象,提供了访问 Web 服务器环境的所有信息。...3、Connection Lifetime指定连接在连接池中保持活动的时间(以秒为单位)。在达到此时间后,连接可能会被关闭和重用,以防止由于长时间保持连接而导致的资源泄漏。...ViewState 是 ASP.NET Web Forms 中的一个机制,用于在 Web 页面的请求之间保持页面的状态。...3、长时间运行Windows 服务通常设计为长时间运行,它们可以一直保持运行状态,直到系统关闭或服务被停止。标准的 EXE 程序通常是在用户请求执行某个操作时运行,执行完成后即退出。

    28510

    关于c# SESSION丢失问题解决办法

    提供一个简单、易于使用的会话状态模型,您可以使用该模型跨多个 Web 请求存储任意数据和对象。...使用进程内会话状态模式时请考虑下面的限制: 使用进程内会话状态模式时,如果 aspnet_wp.exe 或应用程序域重新启动,则会话状态数据将丢失。...这些重新启动通常会在下面的情况中发生: 在应用程序的 Web.config 文件的 元素中,设置一个导致新进程在条件被满足时启动的属性,例如 memoryLimit。...如果在应用程序的 Web.config 文件的 元素中启用了网络园模式,请不要使用进程内会话状态模式。否则将发生随机数据丢失。...还有这二种: 一:在第一个页面置了SESSION,然后REDIRECT去第二个页面。解决方法是在REDIRECT中设置endResponse为FALSE。

    1.9K50
    领券