我有以下代码。
在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;
答案 0 :(得分:1)
这可能是由两件事引起的:
网络服务器使用不同的用户帐户运行(可能是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提供了更多选择来解决此问题。