对于相同的代码,web和桌面应用程序会产生不同的结果

本文关键字:结果 应用程序 桌面 代码 于相同 web | 更新日期: 2023-09-27 17:53:31

我有以下一段代码:

在同一台机器上运行web和桌面应用程序时返回不同的结果。

这是我的代码。请指导我该怎么做??
    var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
    return (from ManagementObject wmiHD in searcher.Get()
            select wmiHD["SerialNumber"] == null ? "VM HD" : wmiHD["SerialNumber"].ToString()).ToList();

下面是相同代码的无linq版本

    var hdCollection = new List<string>();
    var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PhysicalMedia");
    foreach (ManagementObject wmiHD in searcher.Get())
    {
        // get the hardware serial no.
        if (wmiHD["SerialNumber"] == null)
        {
            hdCollection.Add("VM HD");
        }
        else
        {
            hdCollection.Add(wmiHD["SerialNumber"].ToString());
        }
    }
    return hdCollection;

对于相同的代码,web和桌面应用程序会产生不同的结果

这可能是由两个原因引起的:

  • web服务器使用不同的用户帐户运行(可能是NetworkService)http://www.bluevisionsoftware.com/WebSite/TipsAndTricksDetails.aspx?Name=AspNetAccount

  • web服务器在没有Fulltrust权限的情况下运行代码(可能是中等信任)http://discussion.accuwebhosting.com/iis-web-server/993-how-grant-full-trust-mode-domain-asp-net-2-0-iis-6-0-a.html

这两种操作都可能危及安全性,但是第一个操作通过设置acl提供了更多的选择来解决这个问题。