質問

私は、私たちのTFSサーバー上のレポートサービスインスタンスからいくつかのデータをダウンロードしようとしています。
コードは、ドメインに参加していないコンピュータ上で実行する必要があることを考えると、私は私が資格情報を自分で設定することを考え出しました。運は、HTTP 401不正なバックを持っていません。 [OK]を、私は何が起こっているか見るためにバイオリンをフックアップ。

私は Heisenberged になったとき、しかし、それはだ - コールは今滞りなくて行きました。だから、認証が接続されているフィドラーで通過しますが、それなしで失敗します。 Webクライアントが壊れているか、私はここに深遠な何かが足りないのですか?

private void ThisWorksWhenDomainJoined()
    {
        WebClient wc = new WebClient();
        wc.Credentials = CredentialCache.DefaultNetworkCredentials;
        wc.DownloadString("http://teamfoundationserver/reports/........");  //Works
    }

    private void ThisDoesntWork()
    {
        WebClient wc = new WebClient();
        wc.Credentials = new NetworkCredential("username", "password", "domain");
        wc.DownloadString("http://teamfoundationserver/reports/........");  //blows up wih HTTP 401
    }

他のヒント

...これを試してみてください
var credCache = new CredentialCache();
credCache.Add(new Uri("http://teamfoundationserver/reports/........""),
                      "Basic", 
                      new NetworkCredential("username", "password", "DOMAIN"));
wc.Credentials = credCache;

問題が解決しない場合は、「交渉」と「基本」を交換してみます。

あなたはこれを使用するとどうなりますか?

wc.Credentials = CredentialCache.DefaultCredentials;

また、あなたは正しいユーザ名、パスワード、およびドメインを持っていることを確認していますか?

も:.NETがそれらまたはそのような何かを壊したときにフィドラーは、いくつかのUnicode文字の周りに変化しているのだろうか。ユーザー/パス/ドメインがUnicodeを持っている場合は、代わりに"\u2638""☺"のようにそれをエスケープしてみてください。

次のように

私は、CredentialCacheオブジェクトを使用して、このエラーを回避することができた。

WebClient wc = new WebClient();
CredentialCache credCache = new CredentialCache();
credCache.Add(new Uri("http://mydomain.com/"), "Basic",
new NetworkCredential("username", "password"));

wc.Credentials = credCache;

wc.DownloadString(queryString));
scroll top