提供的URI方案' http'是无效的;预期' https'。\ r \ n参数名称:via

时间:2014-03-11 21:10:16

标签: wcf nopcommerce

我正在尝试使用Channel Factory创建一个WCF服务的调用。但是我在标题中得到了上面的错误。如果我取出传输模式,那么我会收到“访问被拒绝”错误。我现在已经使用了3天了。

我所拥有的是一个WCF允许调用WCF1并调用WCF2。 WCF1有一个与WCF2相关的配置文件。现在,我想从另一个应用程序(NopCommerce)调用WCF1。当我从NopCommerce调用WCF1时,我不需要为WCF1而不是WCF2提供web.config信息吗?

所以我到目前为止所做的就是编写了这段代码来调用WCF1服务:

    AddressService.Address verifiedAddress = null;
    AddressService.VerifyThisAddressKeys keys = new AddressService.VerifyThisAddressKeys();
    keys.LicenseId = new Guid("LicenseKey");


    var myBinding = new BasicHttpBinding();
    var myEndpoint = new EndpointAddress("http://www.verifythisaddress.com/AddressVerification/AddressVerificationService.svc");
    myBinding.Security.Mode = BasicHttpSecurityMode.Transport;
    var myChannelFactory = new ChannelFactory<AddressService.IAddressVerificationService>(myBinding, myEndpoint);

    AddressService.IAddressVerificationService client = null;

    try
    {
       client = myChannelFactory.CreateChannel();
       verifiedAddress = client.VerifyThisAddress(address.FirstName, address.LastName, address.Company, address.Address1, address.Address2, address.City, address.StateProvince.Abbreviation, address.ZipPostalCode, address.Country.TwoLetterIsoCode, address.PhoneNumber, address.Email, keys);
       ((ICommunicationObject)client).Close();
     }
     catch(Exception ex)
     {
       if (client != null)
       {
         ((ICommunicationObject)client).Abort();
         Console.WriteLine(ex.Message);
        }
     }

如果我不需要,我的目标是不使用Web.Config文件。 这是我尝试与之通信的WCF配置文件:

<?xml version="1.0"?>
<configuration>
  <connectionStrings>
<add name="DBCS"  connectionString="Data Source=Server"  providerName="System.Data.SqlClient"/>
 </connectionStrings>
 <appSettings>
   <add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
 </appSettings>
 <system.web>
   <compilation targetFramework="4.5" />
   <httpRuntime targetFramework="4.5"/>
<trust level="Full" />
 </system.web>
 <system.serviceModel>
   <bindings>
     <basicHttpBinding>
       <binding name="BasicHttpBinding_IService">
         <security mode="Transport" />
       </binding>
       <binding name="soapEndpointGlobalAddressCheck">
         <security mode="Transport" />
       </binding>
       <binding name="soapSSLEndpointGlobalAddressCheck">
         <security mode="Transport" />
       </binding>
     </basicHttpBinding>
   </bindings>
   <client>
     <endpoint address="https://addresscheck.melissadata.net/v2/SOAP/Service.svc"
       binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService"
       contract="MelissaDataService.IService" name="BasicHttpBinding_IService" />
     <endpoint address="http://address.melissadata.net/v3/SOAP/GlobalAddress"
       binding="basicHttpBinding" bindingConfiguration="soapSSLEndpointGlobalAddressCheck"
       contract="globalcheck.AddressCheckSoap" name="soapEndpointGlobalAddressCheck" />
     <endpoint address="https://address.melissadata.net/v3/SOAP/GlobalAddress"
       binding="basicHttpBinding" bindingConfiguration="soapSSLEndpointGlobalAddressCheck"
       contract="globalcheck.AddressCheckSoap" name="soapSSLEndpointGlobalAddressCheck" />
   </client>
   <behaviors>
     <serviceBehaviors>
       <behavior>
         <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
         <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
         <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
         <serviceDebug includeExceptionDetailInFaults="true"/>
       </behavior>
     </serviceBehaviors>
   </behaviors>
   <protocolMapping>
       <add binding="basicHttpsBinding" scheme="https" />
   </protocolMapping>    
   <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />

 </system.serviceModel>
    <system.webServer>
     <modules runAllManagedModulesForAllRequests="true"/>
     <!--
         To browse web app root directory during debugging, set the value below to true.
         Set to false before deployment to avoid disclosing web app folder information.
       -->
      <directoryBrowse enabled="true"/>
    </system.webServer>

  </configuration>

无法入睡!

0 个答案:

没有答案