未设置COM+应用程序标识
本文关键字:标识 应用程序 COM+ 设置 | 更新日期: 2023-09-27 17:57:46
我看到一个奇怪的问题(很可能我的代码不完整),有人能看看并帮助我找出为什么下面的代码运行良好,但没有发生任何更改。当我去看身份标签时,一切都没有改变。操作系统是windows 2008服务器r2
COMAdminCatalog cc = new COMAdminCatalog);
COMAdminCatalogCollection ccc = (COMAdminCatalogCollection)cc.GetCollection("Applications");
ccc.Populate();
foreach(COMAdminCatalogObject cap in ccc){
if(cap.Name.ToString() == config.Application){
//cap.set_value("Authentication",COMAdminAuthenticationLevelOptions.COMAdminAuthenticationConnect)//I have changed all options here but no effect
cap.set_Value("Identity", config.user);
cap.set_Value("Password", config.password);
ccc.SaveChanges();//breakpoint here
}
}
原来ccc。SaveChanges()返回一个错误代码=1有人知道它的意思吗?MS文档称,返回的错误代码是十六进制值,如0x800401等(刚刚组成)
我自己做了这件事(每天都学到新东西!)这是我的结果,希望我们能解决你的问题:
我创建了一个新的COM+服务器应用程序,并复制了你的代码(做了一些小改动,这样它就可以找到我的应用程序,因为我不知道你的例子中config
是什么:)
从调试到ccc.SaveChanges()
-如果出现问题,这一行应该抛出异常。在我的案例中,我得到了一个UnauthorizedAccessException
-我通过在Visual Studio中以管理员身份运行代码来修复它
一旦我这样做了,ccc.SaveChanges()
就起作用了——我转到我的"身份"选项卡,它正确地更新了用户和密码(如果你在代码中输入了错误的用户名或密码,我相信它也会抛出一个异常)。
我相信您得到的返回类型1
不是错误代码。因为这就是我的回报,它运行得很好。
您可以尝试将ccc.SaveChanges()
包围在try
catch
中,并查看是否引发任何异常。
我希望这能有所帮助。
首先感谢ryrich抽出时间帮助我。事实证明,我的更改没有显示的原因是尽可能愚蠢的。在我测试它的3台机器上,它是一致的。以下是我注意到的。每次我运行上面的代码时,它都能正常工作,因为没有错误,但我在组件服务控制台中看不到更改,糟糕的是我不得不完全关闭组件服务控制台,然后重新启动它,只有这样我才能看到更改。这种行为在我测试的所有三个系统上都是一致的。1:WinXP sp32:Win 7 SP13:Win 2008 Server R2
我在解释这一点,以防其他人看到这种愚蠢的行为。。。