ASP.NET中的Process.Start?

时间:2013-08-06 08:28:38

标签: asp.net asp.net-mvc-4 phantomjs full-trust

我正在尝试将我的网站与PhantomJS集成,以便抓取动态内容。 我通过Process.Start执行此操作,并与我的抓取脚本一起启动PhantomJS。 这对我的devmachine非常有用。

在我的主机上,我已经检查了我的信任级别,级别是 Unrestricted ,高于完全信任,对吗?

但是,我在Process.Start上获得了许可。

为什么当信任级别不受限制时呢?

[编辑] System.ComponentModel.Win32Exception(0x80004005):在System.Diagnostics.Process.Strocess()的System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo)中,在StrengthTracker.Controllers.AppController.Index()

中拒绝访问

执行流程的代码是:

        string path = Server.MapPath(".");
        path = Directory.GetParent(path).FullName;
        path = path + "\\data";

        Response.Write("path:"  + path);

        string a = "\"" + path + "\\scrape.js" + "\" \"" + url + "\"";
        var processStartInfo = new ProcessStartInfo
        {
            CreateNoWindow = true,
            RedirectStandardOutput = true,
            RedirectStandardInput = true,
            UseShellExecute = false,
            Arguments = a,
            FileName = path + "\\phantomjs.exe"
        };

        var process = new Process
        {
            StartInfo = processStartInfo,
            EnableRaisingEvents = true
        };

        //pipe the output
        process.OutputDataReceived += (sender, args) => outputBuilder.Append(args.Data);

        try
        {
            process.Start();
            process.BeginOutputReadLine();
            process.WaitForExit(20000);
            process.CancelOutputRead();
        }
        catch (Exception x)
        {
            return Content(x.ToString());
        }


        return Content(outputBuilder.ToString());

[再次编辑] 该网站似乎驻留在我的主机上的网络共享上。 路径看起来像这个“\ foo \ bar \ bla”

这是问题吗?限制在股票上开始的东西?

1 个答案:

答案 0 :(得分:1)

你可以试试
http://support.microsoft.com/default.aspx?scid=kb;en-us;317012

或者,它可能是文件夹安全问题。保存文件的文件夹必须具有“修改”用户权限。运行IIS进程的IIS_WPG,该用户属于Users组,该用户必须对该文件夹具有Modify访问权限。