.net 如何在IIS上给予witadmin对dotnet应用程序的执行权限?

q3qa4bjr  于 2023-01-10  发布在  .NET
关注(0)|答案(1)|浏览(145)

我创建了一个C#dotnet应用程序,在其中运行witadmin命令:

Process process = new() { StartInfo =
{
    FileName = "witadmin.exe",
    Arguments = $"exportgloballist {TfsCollectionArgument}",
    UseShellExecute = false,
    RedirectStandardOutput = true,
    CreateNoWindow = true
}};
process.Start();
var res = await process.StandardOutput.ReadToEndAsync();
Process process = new() { StartInfo =
{
    FileName = "witadmin.exe",
    Arguments = $"importgloballist {TfsCollectionArgument} /f:{Path.Combine(System.AppContext.BaseDirectory, "globallistsToPost.xml")}",
    UseShellExecute = false,
    RedirectStandardOutput = true,
    CreateNoWindow = true
}};
process.Start();
var res = await process.StandardOutput.ReadToEndAsync();

该代码在我的计算机上运行完美:我可以直接从CMD执行这些witadmin命令,并且无需执行任何特殊操作,我的应用程序也具有执行这些命令的权限。
问题是当我将应用程序放在安装了IIS的服务器上时。witadmin.exe位于服务器的PATH中,因此我可以运行witadmin.exe(注意我是管理员)。但是当我的应用程序运行witadmin.exe时,我得到一个错误you are not authorized to access [My collection]。我如何避免这个错误?我认为我的应用程序应该有运行witadmin.exe的权限。就像服务器上的管理员角色一样,但是如何给我的dotnet IIS应用程序这个授权呢?先谢谢你,如果我有不清楚的地方,请告诉我。

dxpyg8gm

dxpyg8gm1#

您可以尝试此解决方案,将ApplicationPool Identity设置为管理员用户:
1.在IIS管理器中,选择应用程序池。
1.从应用程序池列表中,右键单击网站ApplicationPool,然后选择高级设置。
1.在Process Model部分中,将identity属性更改为Custom account,然后输入admin帐户。

相关问题