처리되지 않은 예외: 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()
위치: 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){ }
{
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))
{ }
{
if (b.Protocol.Equals("http", StringComparison.OrdinalIgnoreCase))
{ }
그래서, Bindings 에서 Protocol 에서 Http 프로토콜이 있는 경우에만 State 값을 호출해야 오류가 나지 않게 됩니다. ( --> 이 부분 같은 경우, Microsoft.Web.Administration 라이브러리에서 알아서 처리를 해줘야 하는데... -_-;;)
댓글 없음:
댓글 쓰기