2009-07-07 13 views
3

WCFを使用して記述されたサービスと通信するためにDelphiクライアント(Delphi 2006)を作成しようとしています。サービスはただ一つの機能で簡単です。技術的には以下のように:Delphi Win32クライアントでWCFサービス(basicHttpBinding)を使用する際の問題

[ServiceContract (Namespace = "http://www.company.com/sample/")] 
public interface IService 
{ 
    [OperationContract] 
    string GetNumber (string name); 
} 

私はIIS上でこのサービスをホストし、MEXエンドポイントとbasicHttpBindingを使用して、それを公開しています。私はそれを.NETクライアントで使用することができます。

WSDLImp.exeを実行しようとしましたが、ソースコードユニットが生成されました(btw、文字列型をカプセル化するwierdクラスが生成されますが、Delphiの文字列型と同じではありません)。

EndpointDispatcherでContractFilterの不一致が原因で、アクション ''のメッセージを受信者で処理できません。例外が発生しました。これは、契約の不一致(送信者と受信者の間の不一致)または送信者と受信者の間のバインディング/セキュリティの不一致のいずれかが原因である可能性があります。送信者と受信者が同じ契約と同じバインディング(セキュリティ要件、たとえばメッセージ、トランスポート、なしなど)を持っていることを確認します。

バインディングまたはセキュリティパラメータを変更するためにDelphi Win32クライアントを設定する方法はありません。この問題を解決するにはどうすればよいですか?

答えて

3

私はまったく同じ問題を抱えています。 Delphiは、WCFによって公開されているWSDLをインポートするのに苦労しています。 1つの解決策は、ASMXラッパーをサービスに追加してDelphiクライアントで使用することです。ここで

は例です:

[ServiceContract (Namespace = "http://www.company.com/sample/")] 
public interface IService 
{ 
    [OperationContract] 
    string GetNumber (string name); 
} 

public class Service : IService 
{ 
    public string GetNumber (string name) 
    { 
     return Repository.GetNumber(name); 
    } 
} 

[WebService(
    Namespace = "http://www.company.com/sample/", 
    Name = "wstest", 
    Description = "description")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
public class AsmxService : WebService 
{ 
    [WebMethod] 
    public string GetNumber(string name) 
    { 
     return Repository.GetNumber(name); 
    } 
} 
+0

申し訳ありませんが、「ASMXラッパーを追加する」という意味を正確に理解できません。あなたは精巧にできますか? – Hemant

+0

「ASMXラッパーを追加する」とは、WCFサービスと同じメソッドを持つASMX Webサービスをソリューションに追加でき、これらのメソッドがまったく同じタスクを実行することを意味します。このasmx Webサービスを追加すると、.asmxエンドポイントが得られます。このエンドポイントはDelphiクライアントで使用できます。 –

+0

私はもうASMXにジャンプしません:http://johnwsaundersiii.spaces.live.com/blog/cns!600A2BE4A82EA0A6!860.entry。 –

2

あなたは何が起こっているのか確認するために、クライアントとサービス間のネットワークトラフィックを調べる必要があります。または、サービス上でWCFトレースを有効にします。可能であれば、メッセージのトレースも含めます。あなたは何が起こっているかを非常に詳細に見ることができるはずです。

+0

これは答えと意見です! +1 – Sam

関連する問題