お世話になっております。ASP.Netのほうにも投稿しているのですが、
C#の話題のためか回答がつかないため、こちらにも投稿させていただきます。
解決しましたら両方書き込みいたしますので、よろしくお願いいたします。
環境は以下です。
[サーバ]
WindowsServer2008 SP2(x86)
IIS7
サーバの公開用サービスはVS2005で作成(これは都合があり、変更できません)
サーバアプリで公開しているWebサービスの関数を使用するテストアプリを作成しています。
VS2008でテストアプリを作成して「サービス参照の追加」からwsdlファイルなどを取得してみたところ、
「~ClientSoap」という名前のクラスが作成されました。
ここで、もともとVS2005で作成されたテストアプリがあるのですが、そちらを見たところ、
「~ClientSoap」というクラスは作成されておらず、Soapのサービス名の
クラスが作成されていました。
ここで、WebアプリはWindows認証を行っています。
そこで、VS2008のアプリで下記のようにWindows認証をおこなう(つもりで)作成したところ、
「このHTTP要求は、クライアントの認証方式'Anonymous'では承認されません。サーバから受信した認証ヘッダーは'Negotiate.NTLM'でした。」
というエラーが出力されます。ソースを示します。
----------------------
XXX.YYYSoapClient soap = new XXX.YYYSoapClient();
soap.ClientCredentials.Windows.ClientCredential = new NetworkCredential( "administrator", "admin" );
soap.Open();
soap.TestFunction( long.Parse( txtPersonId.Text ) );
soap.Close();
----------------------
サーバ側で認証設定を「匿名認証」を有効にするとテストアプリは動作しました。
このことから、認証の箇所でつまずいているのではないかと予想しています。
また、VS2005で作成されたアプリの該当箇所のソースは以下のようになっています。
----------------------
XXX.YYY soap = new XXX.YYY();
soap.Credentials = new NetworkCredential( "administrator", "admin" );
soap.TestFunction( long.Parse( txtPersonId.Text ) );
----------------------
VS2008で作成させるために、アドバイスをお願いいたします。
※VS2005からのコンバートなどの方法ではなく、VS2008で作成を目指しています。