如何检查ServerManager中是否存在元数据?

时间:2014-08-08 20:02:21

标签: c# .net servermanager

我使用以下代码通过Microsoft.Web.Administration.ServerManager获取元数据:

var manager = new ServerManager();
var site = manager.Sites["siteName"];
var metadata = site.GetMetadata("metaKey");

现在,如果" metaKey"如果不存在,GetMetadata将抛出System.Runtime.InteropServices.COMException异常,并显示消息"不支持请求"。如果我首先设置像这样的元数据值

site.SetMetadata("metaKey", "hello")

GetMetadata(" metaKey")不会抛出错误,而是返回值" hello"。在我尝试重新检查之前,如何检查密钥是否存在?如果可能的话,我想避免试试。

1 个答案:

答案 0 :(得分:1)

我试图在拆卸工具中稍微挖掘一下。在内部,它使用本机API上的Microsoft.Web.Administration.Interop程序集(正如您已经猜到的那样,这就是为什么存在COMException)。 IAppHostElement interface。

中描述了使用元数据的方法

从它的GetMetadata方法的描述:

  

返回值
  S_OK:表示操作成功   ERROR_NOT_SUPPORTED:表示无法识别请求的元数据。

正如您所看到的,没有方法可以检查元数据是否存在,并且当返回结果不是S_OK时,互操作会抛出异常。所以不幸的是,我猜想在没有调用GetMatadata方法和捕获异常的情况下,无法知道特定元数据是否存在。