我有一段代码可以使用一些内置函数生成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上运行它时它永远不会工作。我已经尝试过在网络上提到的所有各种解决方案都没有用。
感谢任何帮助。
答案 0 :(得分:0)
如果不确定(通过一些错误日志,eventvwr屏幕截图),我的猜测就是你遇到了权限问题。
从IIS执行基于文件的操作时,您需要记住用于网站的AppPool标识。 AppPool Identity需要具有该特定文件夹的写入权限。
我建议将AppPool用户身份留给内置" ApplicationPoolIdentity",因为这是最安全的选择。
MSDN上有很多关于此主题的有用信息:https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities
具体了解如何添加文件权限的安全资源部分:https://docs.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities#securing-resources
在其他情况下,您可以覆盖给定AppPool的用户帐户,甚至可以覆盖网站上的用户帐户(例如模拟等),但如果您不这样做,那么上述情况应该有效。