8

I started a new blank console app project in VS (I am using VS2010), and choose Add Service Reference to a web service protected with a username and password.

When I click Go in the dialog box, I'm confronted with a Yes/No prompt to accept a certificate. I choose Yes, then I arrive at a Discovery Credential prompt asking for User Name and Password.

If I key those in correctly several times (3+), I finally gain access to the WSDL. Or, oddly enough if I key them correctly once, then cancel, then go through the process again, my creds are accepted on the first attempt.

I asked The Googles and found a few instances related to SQL reporting web services, and someone posted here about something similar, but no one seems to have a definitive answer.

Can anyone explain this odd behavior? Is the service configured incorrectly or is this some sort of known issue with web services or WCF services?

4

5 に答える 5

9

これがまだ答えであるかどうかはわかりませんが、他の人に役立つ場合に備えて投稿しています。

私が見たところによると、安全な Web サービスに Web 参照またはサービス参照を追加するときにユーザー名とパスワードのプロンプトが連続して表示される問題が発生し、資格情報を正しく入力していると確信している場合は、次の 2 つのことを試してください

1) ドメイン\ユーザー名とユーザー名のみを使用する

2) 資格情報を少なくとも 1 回正しく入力した後、2 回目にプロンプ​​トが表示されたら、30 ~ 60 秒間は何もしないでください (YMMV で作ったものです) プロンプトを待って [キャンセル]をクリックすると、サービス参照がプロジェクトに追加されるのを待っている可能性があります。

私が見ているところによると、Visual Studio は急いで、WSDL をダウンロードしたり、プロキシ クラスを生成したりする前に、再プロンプトを表示します。

于 2012-01-09T21:19:02.253 に答える
4

ほぼ同じ問題が発生しました。資格情報を 3 回以上提供する必要がありましたが、停止することはありませんでした。匿名を有効にすることは、実際の解決策ではありません。資格情報を要求しません。

解決策 (匿名なし): -ドメイン情報を含むユーザー名を入力します。私の顧客環境には 2 つのドメインがあります。

プロンプトが 3 回表示されるのは、(私が思うに) 3 つの異なる URL でディスカバリーを行っているためです。

于 2014-01-09T07:30:40.583 に答える
0

昨日これに苦労しました。グーグルは、同じ混乱に陥っている他の人を見つける以外にあまり役に立ちませんでした。

IEでwsdlを問題なく参照できたので、IEは資格情報を問題なく渡していました。したがって、5時間ほどの「wtf」の後、VS2010の検出ダイアログの参照の追加が資格情報を渡していないと判断しました。サーバーが匿名認証を許可していないことを示すエラーメッセージによって証明されます。

「それでは、IEと同じように私の資格情報を提供しませんか?」

ええと、そうではないかもしれません。多分私はそうなると思っていました。たぶん、VS2010は発見のために匿名認証のみを望んでいました。

私が「発見」しようとしていたSSRSサービスを確認したところ、匿名であることが許可されていませんでした。

したがって、私の場合、VS2010は検出のために匿名で認証することを望み、IEが行ったのと同じ方法で資格情報を提供することを望まなかったようです。

そこで、ホスティングサーバーでIISを開き、SSRSサービスの匿名認証を有効にすると、VS2010は役に立たないログインプロンプトの表示を停止しました。

サービス参照がドロップインされ、プロキシが生成されました。

匿名アクセスを無効にしようとはしていませんが、使用するときにClientCredentialsをプロキシに渡すので、ホストで匿名アクセスを無効にしても安全だと思います。

VS2010は、そのダイアログから匿名で認証する必要があったと思います。私が想定していたように、資格情報を提供することはフォールバックではありませんでした。

于 2013-02-19T16:00:05.973 に答える
0

資格情報があり、それらが機能しているにもかかわらず、安全なサードパーティの Web サービスに接続しようとすると、同じ問題が発生しました。

私が見つけた回避策の 1 つは、このStackOverflow の回答によるものでしたが、次のように検出 URL の一部として資格情報を入力できるようです。

http://[username]:[password]@[serviceUrl]/service?wsdl

例えば

http://bob1:password1@myservice.com/service?wsdl

[サービス参照の追加] ダイアログを使用してこの方法を試したところ、資格情報のポップアップ ウィンドウが表示されなくなり、プロキシ クラスが問題なく作成されました。

于 2014-05-27T09:11:04.657 に答える
0

今日、似たようなケースに出会いました。多くの回避策に従いましたが、どちらも機能しませんでした。次に、新しいアプローチを試しました。http://server.domain.name/path/to/wsdlと入力する代わりに、 http://server.ip.address/path/to/wsdlと入力すると、魅力的に機能しました。

于 2015-10-24T21:06:32.497 に答える