代码在本地环境中工作,但在iis上托管时不起作用

时间:2011-08-16 10:00:03

标签: asp.net

Requiremnet - 点击按钮,将在iis上创建一个站点。我正在传递一个名称,该名称将成为iis上站点的名称

我创建了一个powershell脚本来执行此操作。使用process.start,我想打开一个powershell.exe,并希望在其中执行我的代码。 代码...

        System.Diagnostics.Process proc = new System.Diagnostics.Process();
        Char[] chr = Password.ToCharArray();
        System.Security.SecureString pwd = new System.Security.SecureString();

        foreach (char c in chr)
        {
            pwd.AppendChar(c);
        }

        proc.StartInfo.FileName = "powershell.exe";

        //proc.StartInfo.Arguments = powershellScriptCode;  //It contains powershell script       to        create a new website in iis
        proc.StartInfo.UserName = UserName;  //Comes from config file
        proc.StartInfo.Password = pwd;        //Comes from config file
        proc.StartInfo.Domain = Domain;      //Comes from config file
        proc.StartInfo.RedirectStandardError = true;
        proc.StartInfo.RedirectStandardOutput = true;
        proc.StartInfo.UseShellExecute = false;
        bool result = proc.Start();

当我在本地环境中运行此代码时,它运行成功并创建一个网站,但是当我在IIS上运行此代码(托管后),它无法在IIS上创建一个网站。所以我有什么类型的权限必需的。

1 个答案:

答案 0 :(得分:0)

您需要更改应用程序池中的标识。转到IIS管理器 - >应用程序池 - >高级设置 - >过程模型 - >身份。将其更改为“本地系统”并重试(但请记住将其更改回去,除非您知道自己在做什么,安全方面;如果可行,请创建一个只具有所需权限的用户帐户。)