- PR -

wsdlの動的設定

投稿者投稿内容
優希
ベテラン
会議室デビュー日: 2003/08/12
投稿数: 92
投稿日時: 2006-03-14 18:22
書き方が悪くて、
すいません。

「Web参照の追加」と同じことを、
コード上で動的に行いたい、という意味でした。

クラス名・メソッド名は、それぞれ同じ名称を使います。

[ メッセージ編集済み 編集者: 優希 編集日時 2006-03-14 18:24 ]
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-03-14 18:29
引用:

の「method1」名は、同じでないといけないのですね‥。


同じである必要は無いですが、別にする必要も無いですよね。

引用:

「Web参照の追加」と同じことを、
コード上で動的に行いたい、という意味でした。

クラス名・メソッド名は、それぞれ同じ名称を使います


実際に呼び出す Webメソッド名はWebサービスの場所によって全然違うという事?
「Web参照の追加」と同じ事をコード上で行いたい動機は?
_________________
囚人のジレンマな日々
優希
ベテラン
会議室デビュー日: 2003/08/12
投稿数: 92
投稿日時: 2006-03-14 18:29
上記のような意味で、
VBで記述されたWSHスクリプトを使ったコードを、
C#で記述できないかな、、とも考えていたのでした。

ホント、すいません。
囚人
ぬし
会議室デビュー日: 2005/08/13
投稿数: 1019
投稿日時: 2006-03-14 18:33
引用:

上記のような意味で、
VBで記述されたWSHスクリプトを使ったコードを、
C#で記述できないかな、、とも考えていたのでした。


そういう事でしたら、自動生成してくれたプロキシクラスをほじってみるのが近道かもしれませんね。C# で書かれていることですし。
_________________
囚人のジレンマな日々
todo
ぬし
会議室デビュー日: 2003/07/23
投稿数: 682
投稿日時: 2006-03-14 19:56
引用:

そういう事でしたら、自動生成してくれたプロキシクラスをほじってみるのが近道かもしれませんね。C# で書かれていることですし。



挑戦したことがありますが、

[System.Web.Services.Protocols.SoapDocumentMethodAttribute]

等を動的に設定する方法が見つからずに挫折しました。

とりあえず、二つの案を書いておきます。

●案1

引用:

WebサービスとSOAPクライアント



これをC#に移植する。
つまり、C#プロジェクトからMicrosoft SOAP ToolkitをCOM参照する。

●案2

引用:

「Web参照の追加」と同じことを、 コード上で動的に行いたい、という意味でした。



言葉通り、同じことをコード上で行う。

C#からwsdl.exeとcsc.exeを操って、プロクシクラスをコンパイルする。
http://www.atmarkit.co.jp/fdotnet/dotnettips/298aspamazonsvc/aspamazonsvc.html

生成されたアセンブリを動的にロードする。

優希
ベテラン
会議室デビュー日: 2003/08/12
投稿数: 92
投稿日時: 2006-03-15 17:26
ご返信、ありがとうございます。

そうですね。
2通りのやり方があるんですね。
今、「●案1」の方をやってみようと思っていますが、
wsfファイルに書き込んでみて、
試しにコマンドプロンプトで実行をしてみたのですが、
下記のようなエラーとなってしまいます。


まずは、wsfファイルのコード。
コード:
<?xml version="1.0" encoding="utf-8" ?>
<package xmlns="http://schemas.microsoft.com/WindowsScriptHost">
	<job>
		<script language="JScript">
		    var strMessage1;
		    var result;
		    var objParm = WScript.arguments;
		    strMessage1 = objParm(0);
            
            var sc = WScript.CreateObject("MSSOAP.SoapClient");
            sc.mssoapinit("http://localhost/sample?wsdl");
            result = sc.SampleMethod(strMessage1);
            
            WScript.echo(strMessage1); 
		</script>
	</job>
</package>



次にエラーです。
引用:

C:\\Sample\\\\WinScript1.wsf(11, 14)
Client: WSDLReader:Analyzing the WSDL file failed HRESULT=0x80004005
- WSDLReader:Initialization of service failed HRESULT=0x80004005
- WSDLService:Initialization of the port for service SampleService
failed HRESULT=0x80004005
- WSDLPort:Analyzing the binding information for port SamplePort
failed HRESULT=0x80004005
- WSDLPort:An operation for port SamplePort could not be initialized
HRESULT=0x80004005
- WSDLOperation:Initializing of the input message failed for operation
SampleMethod HRESULT=0x80004005
- WSDLOperation:Initialization of a SoapMapper for operation SampleMethod
failed HRESULT=0x80004005
- SoapMapper:The SoapMapper for element SampleElement could not be created
HRESULT=0x80004005




「http://localhost/sample?wsdl」にアクセスしたら、
きちんと見えるんですが‥。

また、プログラムで実行する場合は、
Processクラスから呼び出せば良いのでしょうか!?

何か気づいた点がありましたら、
アドバイスの程、宜しくお願いします。

スキルアップ/キャリアアップ(JOB@IT)