0

app.config なしで .net 2.0 Web サービスを使用する一般的な質問

私の悪い英語を許してください:

私がすでにしたこと:

app.config 内に保存されている事前構成済みの Web 接続に接続するテスト コンソール アプリケーションを作成しました。これは正常に動作します。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
    </configSections>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
                <binding name="XpageServiceSoap">
                    <security mode="Transport" />
                </binding>
                <binding name="XpageServiceSoap1" />
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="https://www.anydomain.com/XpageService.asmx"
                binding="basicHttpBinding" bindingConfiguration="XpageServiceSoap"
                contract="XsysService.XpageServiceSoap" name="XpageServiceSoap" />
        </client>
    </system.serviceModel>
</configuration>

ここで、COM でも使用できるアセンブリを構築したいと考えました。DLL の app.config を使用できないため、DLL 関数を呼び出そうとするとエラーが発生します。

DLL 内に接続情報を保持したいと考えています。だから私は次のことを試しました:

[ServiceContract]
interface IXsysService
{
    [OperationContract]
    string userpswd(string user, string passwort);
    [OperationContract]
    string pagesource(string page, string tokenxml, string ip);
}

メインから呼び出されます:

EndpointAddress address = new EndpointAddress("https://www.anydomain.com/XpageService.asmx");
WSHttpBinding bind = new WSHttpBinding(SecurityMode.Transport);
ChannelFactory<IXsysService> factory = new ChannelFactory<IXsysService>(bind, address);
IXsysService proxy = factory.CreateChannel();

using (proxy as IDisposable)
{
    Console.WriteLine("Abruf: {0}", proxy.userpswd("user",GetPasswortFromConsole())); // exception!
    Console.ReadLine();
}

プロキシは SSL 経由で正常に接続しているようです。しかし、userpswd() を呼び出すと、次の例外が発生します (ドイツ語からの翻訳)。

「System.Web.Services.Protocols.SoapException: 有効なアクション パラメータがないと要求を処理できません。有効な SOAPAction オブジェクトを指定してください。」

これを試すと:

EndpointAddress address = new EndpointAddress("https://www.anydomain.com/XpageService.asmx?wsdl");

同じ例外が発生します。

私がしようとしていることは完全に間違っているかもしれません。

この問題を解決する方法を提案してくれる人はいますか? app.config なしで Web サービスに接続するアセンブリが必要です。

4

1 に答える 1

0

アプリケーションで使用される構成ファイル ソースは 1 つだけです。これは、アプリケーション自体の構成ファイルです。あなたの場合、それはコンソールアプリケーションの構成です。

すべての設定は、そのファイル内にある必要があります。DLL の app.config から取得した場合は、コンソール アプリケーションの app.config にコピーする必要があります。

これは、1 つのライブラリ (DLL) がさまざまな消費プロジェクト (コンソール アプリケーション、Windows サービス、デスクトップ アプリケーション) で使用される可能性があるためです。これらはそれぞれ、異なる設定が必要になる場合があります。ライブラリのさまざまなユーザーを無視して、ライブラリの設定のセットを 1 つだけにするのはうまくいきません。

于 2013-04-19T17:55:06.967 に答える