0

我正在尝试将我的网站与 PhantomJS 集成以抓取动态内容。我通过 Process.Start 执行此操作,并将 PhantomJS 与我的抓取脚本一起启动。这在我的开发机器上效果很好。

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

不过,我在 Process.Start 上获得了拒绝的权限。

为什么在信任级别不受限制时会出现这种情况?

[编辑] System.ComponentModel.Win32Exception (0x80004005): 访问被拒绝在 System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) 在 System.Diagnostics.Process.Start() 在 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"

那是问题吗?限制在共享上启动某些东西?

4

1 回答 1

1

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

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

于 2013-08-06T08:45:33.220 回答