繁体   English   中英

从IIS8执行cmd文件

[英]Execute a cmd file from IIS8

我有一段代码可以通过内置函数生成excel

string xmlfilePath = "C:\\Test\\standard_xml.xml";
string script = "C:\\Test\\script.vbs";
 string template = "Template";
 string cmdfilePath = @"C:\\Test\\executable.cmd";
if (File.Exists(cmdfilePath))
  {
    File.Delete(cmdfilePath);
  }

 using (FileStream fs = File.Create(cmdfilePath))
   {
     Byte[] info = new UTF8Encoding(true).GetBytes("\"" + script + "\"" + " " + 
       "\"" + template + "\"" + " \"" + xmlfilePath + "\"");
     fs.Write(info, 0, info.Length);
   }
     var process = Process.Start(cmdfilePath);
    process.WaitForExit();

此代码生成一个excel,并执行一些必需的操作。

在Visual Studio中进行测试时,这工作得很好,但是当我在iis8上运行它时,它将永远无法工作。 我尝试了网络上提到的所有各种解决方案,但没有任何效果。

任何帮助表示赞赏。

不确定(通过一些错误日志,eventvwr屏幕截图),我的猜测是您遇到了权限问题。

从IIS执行基于文件的操作时,您需要记住用于网站的AppPool身份。 AppPool身份将需要具有对该特定文件夹的写权限。

我建议将AppPool用户身份留给内置的“ ApplicationPoolIdentity”,因为这是最安全的选择。

在MSDN上有很多关于此主题的很好的信息: https : //docs.microsoft.com/zh-cn/iis/manage/configuring-security/application-pool-identities

专门查看安全资源部分,了解如何添加文件权限: https : //docs.microsoft.com/zh-cn/iis/manage/configuring-security/application-pool-identities#securing-resources

在其他情况下,您可以覆盖给定AppPool的用户帐户,甚至可以覆盖网站上的用户帐户(用于模拟等),但是如果您不这样做,则上面的方法应该有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM