2010/11/04

IIS 7, ServerManager Site State 오류 0x800710D8

IIS 7에서 제공되는 Microsoft.Web.Administration 닷넷 라이브러리를 이용하여 사이트 정보를 가져올 경우, 사이트 인스턴스의 상태값을 가져올때 다음과 같은 오류가 발생합니다.

처리되지 않은 예외: System.Runtime.InteropServices.COMException (0x800710D8): 개체 식별자가 올바른개체를 나타내지 않습니다. (예외가 발생한 HRESULT: 0x800710D8)
   위치: Microsoft.Web.Administration.Interop.IAppHostProperty.get_Value()
   위치: Microsoft.Web.Administration.ConfigurationElement.GetPropertyValue(IAppHostProperty property)
   위치: Microsoft.Web.Administration.Site.get_State()

위와 같은 오류는, 다음과 같은 코드를 사용할때에 발생합니다.

using (ServerManager mgr = new ServerManager())
{               
    foreach (Site s in mgr.Sites)
    {
       if (s.State == ObjectState.Started){ }

처럼 모든 사이트에 대해서 리스트팅을 할때에, 없는 값을 가져올려고 하기 때문입니다. IIS 7의 경우 Ftp 와, Web 의 구분이 없습니다.

하지만, Ftp 사이트만 생성한 경우에는 State 값이 없습니다.
State 값은 Web 사이트에서만 제공되는 값입니다. 이유는 모르겠습니다.....

foreach (Binding b in site.Bindings)
{
    if (b.Protocol.Equals("http", StringComparison.OrdinalIgnoreCase))
    { }

그래서, Bindings 에서 Protocol 에서 Http 프로토콜이 있는 경우에만  State 값을 호출해야 오류가 나지 않게 됩니다.  ( --> 이 부분 같은 경우, Microsoft.Web.Administration 라이브러리에서 알아서 처리를 해줘야 하는데... -_-;;)


댓글 없음:

댓글 쓰기

가장 많이 본 글