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 サービスに接続するアセンブリが必要です。