未设置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+应用程序标识

我自己做了这件事(每天都学到新东西!)这是我的结果,希望我们能解决你的问题:

我创建了一个新的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

我在解释这一点,以防其他人看到这种愚蠢的行为。。。