0

私が書いているモジュールで既存の SOAP-Webservice を使用する必要があります。

私のモジュールの私のweb.configには以下が含まれます:

<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="WebShopServiceSoap" closeTimeout="00:01:00" openTimeout="00:01:00"
      receiveTimeout="00:10:00" sendTimeout="00:01:00" allowCookies="false"
      bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
      maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
      messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
      useDefaultWebProxy="true">
      <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
        maxBytesPerRead="4096" maxNameTableCharCount="16384" />
      <security mode="None">
        <transport clientCredentialType="None" proxyCredentialType="None"
          realm="" />
        <message clientCredentialType="UserName" algorithmSuite="Default" />
      </security>
    </binding>
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://10.0.0.123/LCWebservices/LC.MiscService/webshopservice.asmx"
    binding="basicHttpBinding" bindingConfiguration="WebShopServiceSoap"
    contract="LCWebshopServiceReference.WebShopServiceSoap" name="WebShopServiceSoap" />
</client>

しかし、私のモジュールはスローします

Oops. Something went wrong ... sorry
An unhandled exception has occurred and the request was terminated. 
Please refresh the page. If the error persists, go back

Es wurde kein standardmäßiges Endpunktelement gefunden, das auf den Vertrag
 "LCWebshopServiceReference.WebShopServiceSoap" im ServiceModel-
Clientkonfigurationsabschnitt verweist. 
Dies kann folgende Ursachen haben: Für die Anwendung wurde keine 
Konfigurationsdatei gefunden, oder im Clientelement wurde kein 
Endpunktelement gefunden, das diesem Vertrag entsprach.

つまり、エンドポイント要素が見つからなかったということです。これは、この web.config が Orchard-Root に存在しないことが原因であると思われます。

これについてどうするのが最善ですか??

thx ラインハルト

4

1 に答える 1

0

を使用してweb.configを使用できます

Configuration configuration = ConfigurationManager.OpenMappedExeConfiguration(
                new ExeConfigurationFileMap { ExeConfigFilename = HostingEnvironment.ApplicationPhysicalPath + @"/Modules/MyModule/Web.config" }, ConfigurationUserLevel.None);

        var factory = new ConfigurationChannelFactory<IMyService>("IMyService", configuration, null);
        var client = factory.CreateChannel();
        client.MyMethod();

基本的に、独自の設定で siteSettings コンテンツ部分を拡張し、そこにアドレスとバインディング情報を保存する必要があります。そして、それらの設定を独自の IoC サービス クラスで使用します。

サービス クラスは、バインディングと ChannelFactory を作成して Web サービスを呼び出すことができます。

var factory = new ChannelFactory<WorkflowServiceRef.IWorkflowService>(
             binding,
             new EndpointAddress(endpointUri));
factory.Credentials.SupportInteractive = false;
factory.ConfigureChannelFactory();
var channel = factory.CreateChannel();

channel.MyMethod()
于 2012-08-16T08:57:26.427 に答える