1

C# とディレクトリ サービスを使用して簡単なデータ取得を試みていますが、何らかの理由でどの XP マシンでも機能しません。私のコードを Server 2003 マシンで実行しても問題はありません。XPで必要な再配布可能ファイルがあるかどうか、または機能が単にそこにないかどうかを調べるのにかなりの時間を費やしましたが、XPで動作する同様のコードを持つ他の開発者への参照を見つけました. 誰かが共有する経験やアドバイスを持っているなら、私はそれを感謝します.

私のためにクラッシュしている簡単なコードスニペット:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.DirectoryServices;

namespace IIS_Site_Query_Tool
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            DirectoryEntry W3SVC = new DirectoryEntry("IIS://localhost/w3svc");
            foreach (DirectoryEntry Site in W3SVC.Children)
            {
                //Do some data processing
            }
        }
    }
}

これを XP で実行すると、HRESULT が -2147463168 の次のエラーが表示されます。

System.Runtime.InteropServices.COMException was unhandled
  Message="Unknown error (0x80005000)"
  Source="System.DirectoryServices"
  ErrorCode=-2147463168
  StackTrace:
       at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
       at System.DirectoryServices.DirectoryEntry.Bind()
       at System.DirectoryServices.DirectoryEntry.get_IsContainer()
       at System.DirectoryServices.DirectoryEntries.ChildEnumerator..ctor(DirectoryEntry container)
       at System.DirectoryServices.DirectoryEntries.GetEnumerator()
       ...

エラーのさまざまな情報をグーグルで検索すると、これはかなり一般的な COM 相互運用エラーであると考えるようになり、現時点では考えがありません。どんな助けでも大歓迎です!

4

2 に答える 2

1

スタック トレースとリフレクターに基づいて、ADsOpenObject への呼び出しが E_ADS_BAD_PATHNAME を返しているよう見えます。このエラーは、DirectoryEntry クラスに指定したパスが現在のマシンで有効でないことを示しています。

IIS がインストールされている場合、IIS プロバイダーがコンピューターに正しくインストールされていない可能性があります。

詳細については、この SO の質問を参照してください: ADSI は XP ワークステーションから IIS に接続しません

于 2009-02-03T15:37:25.180 に答える
0

IISをインストールすると修正されました。この小さなユーティリティを作成するまで ADSI に出会ったことがなかったので、ソフトウェアが独自の ADSI 機能のチャンクをインストールできることを知りませんでした。助けてくれてありがとう!

于 2009-02-03T16:34:55.110 に答える