exe文件无法从IIS创建txt文件

时间:2014-01-10 12:10:28

标签: c# asp.net iis file-permissions iis-express

我创建了一个WebApi项目,我在其中调用一个exe Latlong2XY.exe,它将输入文件和outputfile作为参数。并返回一个.txt作为输出文件。当我从VS2012 IDE执行应用程序时,它成功创建了所需的txt文件。但是,当我在IIS中发布相同的应用程序并运行它时,它无法创建txt文件。

似乎IIS Express正在创建txt文件而IIS不是。

这似乎是一些许可问题。但是没有任何线索该做什么。 我的代码是:

        int exitCode;
        // Prepare the process to run
        ProcessStartInfo start = new ProcessStartInfo();
        // Enter in the command line arguments, everything you would enter after the executable name itself
        start.Arguments = @"D:\RFD\InputFile.txt D:\RFD\Results.txt";
        // Enter the executable to run, including the complete path
        start.FileName = @"D:\RFD\Latlong2XY.exe";
        // Do you want to show a console window?
        start.WindowStyle = ProcessWindowStyle.Hidden;
        start.CreateNoWindow = true;

        // Run the external process & wait for it to finish
        using (Process proc = Process.Start(start))
         {
            proc.WaitForExit();

            // Retrieve the app's exit code
            exitCode = proc.ExitCode;

        }

IIS设置为:

Windows身份验证:已禁用; 表单身份验证:禁用; Anon auth:启用; .Net模拟:已禁用。

我正在使用ASP.NET v4.0应用程序池。

2 个答案:

答案 0 :(得分:0)

您需要提供应用程序目录(托管文件在计算机上的位置)提升权限。 (通常为C:\ inetpub \ wwwroot \ YourAppName)

将用户'IIS_USR'或接近该名称的内容写入文件夹。

答案 1 :(得分:0)

是的。当您从"Visual Studio IDE"执行这些操作时,它将起作用,因为IDE具有控制(System.Diagnostics.Process.Start)的IO操作的最小权限。

当您从IIS进行Web application托管时,遗憾的是IIS在构建时没有这些权限设置。因此,您需要设置权限才能执行windows native operations

注意:通过使用此功能,您将提供加密的系统(服务器)用户名和密码。

您可以使用Aspnet_setreg.exe在Web配置中设置Windows身份验证权限。哪些将在互联网上提供使用说明。

在网址中添加以下内容:

<authentication mode="Windows"/>

<identity impersonate ="true"  userName="registry:HKLM\SOFTWARE\YourAPPName\ASPNET_SETREG,userName" password="registry:HKLM\SOFTWARE\YOURAPPNAME\ASPNET_SETREG,password"/>

在开发“Windows服务从Web重新启动”期间遇到的类似问题。相同的权限问题我已经解决并以这种方式工作。

这个答案可能并不完美。但这也是实现解决方案的一种方式