質問

私は、クリックワンス展開7.5 WebサーバーをIISからであるプロジェクトに取り組んでいます。親アプリケーション(すなわち、IISのサイトを設定)をインストールした後、私は、クリック一回アプリの設定ファイルのリモートボックスからのURLをヒットすることができるよ。
私は私のアプリ(およびスタブアプリ以下)から同じことをしようとしたときしかし、私は401無断ます。

を取得

IEからURLを打つの違いは何であり、A .NETアプリ?
から ファイルやディレクトリ自体は、現時点ではWebサーバ上のすべての人に付与された完全な制御を持っている、と私はボックスの管理者です。私たちは、NTLMでWindows認証を使用しています。

おかげで、 -Bob

不正場合doc.Load()ライン上で -

ここでは401を生成するスタブアプリケーションです。私はIEから成功した同じURLをヒットし、ファイルを開くことができます...

static void Main(string[] args)
    {
        Console.WriteLine("Config Test");
        string filename = "http://dev-rs/myClient/myClickOnce/myApp.config.xml";
        Console.WriteLine(filename);
        XmlDocument doc = new XmlDocument();
        doc.Load(filename);
        Console.WriteLine("Loaded");
        Console.WriteLine("Inner Text : " + doc.InnerText);
    }
役に立ちましたか?

解決

の原則を確立します:

AppDomain currentDomain = AppDomain.CurrentDomain;
currentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);

のXMLDocumentは、いつURLからロードの資格情報を渡すことをサポートしていません。代わりに、WebRequestクラスストリームからロードし、ロードの前に要求に認証情報を設定します。

WebRequest request = HttpWebRequest.Create(filename);
request.Credentials = CredentialCache.DefaultCredentials;

XmlDocument doc = new XmlDocument();
doc.Load(request.GetResponse().GetResponseStream());
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top