.net 部署IIS 在服务器无法杀掉EXCEL进程

[Win32Exception (0x80004005): 拒绝访问。]
   System.Diagnostics.Process.GetProcessHandle(Int32 access, Boolean throwIfExited) +1985316
   System.Diagnostics.Process.Kill() +49
   ApricotCMS.Controllers.ImportController.Kill(_Application excel) +144
   ApricotCMS.Controllers.ImportController.Family(HttpPostedFileBase file) +27340
   lambda_method(Closure , ControllerBase , Object[] ) +127
   System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) +264

  上面是堆栈信息  无法kill掉excel进程 因为权限不够

修改线程池中的Identity

修改为管理权限就可以关闭进程了

用回收器可以搞定

appExcel.Workbooks.Close();
appExcel.Quit();
System.Runtime.InteropServices.Marshal.ReleaseComObject(ws);
ws = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(wb);
wb = null;
System.Runtime.InteropServices.Marshal.ReleaseComObject(appExcel);
appExcel = null;

GC.Collect();

用kill进程的方法很好 在本地测试完全没问题

[DllImport("User32.dll", CharSet = CharSet.Auto)]
        public static extern int GetWindowThreadProcessId(IntPtr hwnd, out int ID);

        public  void Kill(Microsoft.Office.Interop.Excel.Application excel)
        {
            IntPtr t = new IntPtr(excel.Hwnd);   //得到这个句柄,具体作用是得到这块内存入口   

            int k = 0;
            GetWindowThreadProcessId(t, out k);   //得到本进程唯一标志k
            System.Diagnostics.Process p = System.Diagnostics.Process.GetProcessById(k);   //得到对进程k的引用
            p.Kill();     //关闭进程k  

        } 

在服务器上就不行  提示

Win32Exception (0x80004005): 拒绝访问

所以还是用GC回收的方式可行 测试绝对可行
时间: 2024-12-28 21:27:54

.net 部署IIS 在服务器无法杀掉EXCEL进程的相关文章

Windows7下 部署 ASP.NET 服务器 (IIS 7)

来源:Microsoft官网(http://technet.microsoft.com/zh-cn/library/cc731252(v=WS.10).aspx) 使用 Windows Vista 或 Windows 7 UI 单击“开始”,然后单击“控制面板”. 在“控制面板”中,单击“程序”,然后单击“打开/关闭 Windows 功能”. 在“Windows 功能”对话框中,单击“Internet Information Services”以安装默认的功能,然后选择以下附加功能(万维网服务-

IIS下打印报表到Excel

阅读本文之前,请先看上一篇文章<.NET下Excel报表的打印>. 上一篇文章<.NET下Excel报表的打印>介绍了关于报表打印到Excel文件中的方法.若要把项目通过IIS发布出来,还需要继续做以下配置.本文主要介绍在IIS中如何设置允许调用服务器上的Excel程序.只有设置了这些配置,报表打印才能在实际项目中得以应用. 第一步: 在服务器上安装office的Excel软件. 在"开始"->"运行"中输入dcomcnfg启动&quo

IIS Express服务器遇到400/503/IIS Express Error的解决办法

目前脑子比较乱.下午想让室友从局域网中它的主机访问我电脑上自己部署的一个网站,可是接二连三遇到了400,503,...等问题,弄得有点头大.还好现在解决了.下面记录一下遇到的问题: (不知道为什么图片粘贴不进来,算了贴网址吧) 1.(http://www.cnblogs.com/qk2014/p/4783006.html)这个网址中教会我怎么打开IIS服务,因为一开始怎么都找不到IIS服务在哪里,网上各种教程都看了,给出的路径下都没有(不知道是Win10的原因还是什么). 2.(https://

.Net Core部署IIS

1.环境安装 https://dotnet.microsoft.com/download/dotnet-core 下载Runtime & Hosting Bundle包安装,iis模块会出现支持netcore的内容 2.部署iis 和原来的net部署一样,唯一区别是将托管模式修改为无托管 扩展: .netcore的托管模式主要分2种:进程内托管和进程外托管 在 IIS 工作进程 (w3wp.exe) 内托管 ASP.NET Core 应用,称为进程内托管模型.将 Web 请求转发到运行 Kest

.NET框架 - NETCORE部署IIS

.NET框架 - NETCORE部署IIS 1. 发布NETCORE项目. 2. 发布IIS 添加 网站 修改对应的程序池 为 ”无托管代码“. 3. 浏览网站. IIS 需提前安装好 .netcore 运行时插件<.Net Core Runtime>. 下载网站: https://dotnet.microsoft.com/download 如出现以下问题: IIS部署Asp.Net Core 项目运行时报错,处理程序“aspNetCore”在其模块列表中有一个错误模块“AspNetCoreM

C# 远程服务器 安装、卸载 Windows 服务,读取远程注册表,关闭杀掉远程进程

这里安装windows服务我们用sc命令,这里需要远程服务器IP,服务名称.显示名称.描述以及执行文件,安装后需要验证服务是否安装成功,验证方法可以直接调用ServiceController来查询服务,也可以通过远程注册表来查找服务的执行文件:那么卸载文件我们也就用SC命令了,卸载后需要检测是否卸载成功,修改显示名称和描述也用sc命令.至于停止和启动Windows服务我们可以用sc命令也可以用ServiceController的API,当停止失败的时候我们会强制杀掉远程进程,在卸载windows

eclipse下创建maven项目并部署到tomcat服务器(转)

maven项目部署到服务器有很多方法,可以利用jetty-maven-plugin或者tomcat-maven-plugin,这属于maven的知识点. 通常开发中,需要将项目放在服务器上借助开发工具进行调试,这里就写一下在eclipse中创建maven项目,并将它改造使之能够部署到集成在eclipse中的tomcat上面. 1.点击File-->New-->Project,选择Maven Project,点击Next 2  选择项目所在的java working set ,点击Next 3.

在Eclipse中使用Maven将Web项目自动部署到tomcat服务器

一.创建Web项目 1.1 选择建立Maven Project 选择File -> New ->Project,如下图所示: 在New窗口中选择 Maven -> Maven Project.点击[next]如下图所示: 1.2 选择项目路径 根据项目的实际情况选择项目的存放目录,也可以选择[Use default Workspace location]默认工作空间.如下图所示: 1.3 选择项目类型 在Artifact Id中选择maven-archetype-webapp,如下图所示

Lync Server 2010部署群聊服务器

最近有网友问到Lync Server 2010部署群聊服务器,在此把部署文档发出来供参考. 下载链接:http://down.51cto.com/data/2256828