C# 值'';无效

C# 值'';无效,c#,asp.net,iis,C#,Asp.net,Iis,我有一个ASP.NET应用程序来创建通讯组列表。它在使用IIS Express的开发机器上运行良好,但在服务器上,我从标准输出中得到以下错误: 值“”无效 下面是我用于邮件启用通讯组列表的代码。我已经用一个简单的“echo test”批处理文件替换了powershell脚本,但是标准输出仍然会出现相同的错误 //ProcessStartInfo info = new ProcessStartInfo("c:\\Windows\\system32\\WindowsPowerShell\\v1.0\

我有一个ASP.NET应用程序来创建通讯组列表。它在使用IIS Express的开发机器上运行良好,但在服务器上,我从标准输出中得到以下错误:

值“”无效

下面是我用于邮件启用通讯组列表的代码。我已经用一个简单的“echo test”批处理文件替换了powershell脚本,但是标准输出仍然会出现相同的错误

//ProcessStartInfo info = new ProcessStartInfo("c:\\Windows\\system32\\WindowsPowerShell\\v1.0\\powershell.exe", "c:\\PowershellScripts\\EnableDL.ps1 -dlName '" + model.Name + "'");
ProcessStartInfo info = new ProcessStartInfo("c:\\powershellscripts\\test.bat");
info.UseShellExecute = false;
info.RedirectStandardOutput = true;
info.RedirectStandardError = true;
info.RedirectStandardInput = true;
info.CreateNoWindow = true;
info.Domain = "CONTOSO.COM";
info.UserName = User.Identity.Name;
info.Password = securePassword;

using (Process run = Process.Start(info))
{
    ModelState.AddModelError("dlcreate", run.StandardOutput.ReadToEnd());
    run.WaitForExit();
}
我只是不明白是什么导致了这一切。在我的开发机器(iisexpress)上运行脚本工作正常,在服务器上以用户身份通过CMD运行脚本也工作正常。我甚至无法通过CMD重现错误。有什么想法吗

更新:不确定是否有任何帮助,但当我删除域、用户名和密码对象时,所有可执行文件都会在DefaultAppPool用户下正常运行。

我认为您可能需要对ASP.Net应用程序“完全信任”才能在shell中启动某些内容。这里有一个关于Web应用程序的信任级别的链接


对于那些遇到此问题的人。我发现问题在于您模拟的用户没有在IIS服务的桌面上运行应用程序的权限


链接在底部的示例代码为我修复了它。

它很可能与安全性有关。我相信是这样,但是ASP.NET池已经在IIS+站点+应用程序级别上完全信任地运行。我不确定还有什么其他安全设置可能会阻止它。服务器和应用程序已在IIS管理器中设置为完全信任。是否有其他设置可能会阻止它?