【问题标题】:The provided URI scheme 'http' is invalid; expected 'https'. Parameter name: via提供的 URI 方案“http”无效;预期的“https”。参数名称:via
【发布时间】:2013-03-23 04:37:34
【问题描述】:

我认为我创建了一个新问题,因为我的 earlier question 充满了噪音。无论如何,我在那里完成了建议,现在当我尝试访问客户端时出现以下错误。

堆栈跟踪:

[ArgumentException: The provided URI scheme 'http' is invalid; expected 'https'.
Parameter name: via]
   System.ServiceModel.Channels.TransportChannelFactory`1.ValidateScheme(Uri via) +12692384
   System.ServiceModel.Channels.HttpChannelFactory`1.ValidateCreateChannelParameters(EndpointAddress remoteAddress, Uri via) +24
   System.ServiceModel.Channels.HttpsChannelFactory`1.ValidateCreateChannelParameters(EndpointAddress remoteAddress, Uri via) +276
   System.ServiceModel.Channels.HttpsChannelFactory`1.OnCreateChannelCore(EndpointAddress address, Uri via) +29
   System.ServiceModel.Channels.HttpChannelFactory`1.OnCreateChannel(EndpointAddress remoteAddress, Uri via) +71
   System.ServiceModel.Channels.ChannelFactoryBase`1.InternalCreateChannel(EndpointAddress address, Uri via) +52
   System.ServiceModel.Channels.ChannelFactoryBase`1.CreateChannel(EndpointAddress address, Uri via) +55
   System.ServiceModel.Channels.ServiceChannelFactoryOverRequest.CreateInnerChannelBinder(EndpointAddress to, Uri via) +35
   System.ServiceModel.Channels.ServiceChannelFactory.CreateServiceChannel(EndpointAddress address, Uri via) +23
   System.ServiceModel.Channels.ServiceChannelFactory.CreateChannel(Type channelType, EndpointAddress address, Uri via) +71
   System.ServiceModel.ChannelFactory`1.CreateChannel(EndpointAddress address, Uri via) +468
   System.ServiceModel.ChannelFactory`1.CreateChannel() +29
   System.ServiceModel.ClientBase`1.CreateChannel() +95
   System.ServiceModel.ClientBase`1.CreateChannelInternal() +23
   System.ServiceModel.ClientBase`1.get_Channel() +281
   _Default.btSubmit_click(Object sender, EventArgs e) +73
   System.Web.UI.WebControls.Button.OnClick(EventArgs e) +9553178
   System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +103
   System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +10
   System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +13
   System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +35
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1724

这里是 web.config(用于客户端应用程序):

<configuration>
    <connectionStrings>
        <add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient"/>
    </connectionStrings>
    <system.web>
        <compilation debug="false" targetFramework="4.0">
            <assemblies>
                <add assembly="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/></assemblies></compilation>
        <authentication mode="Forms">
            <forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
        </authentication>
        <membership>
            <providers>
                <clear/>
                <add name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/>
            </providers>
        </membership>
        <profile>
            <providers>
                <clear/>
                <add name="AspNetSqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="ApplicationServices" applicationName="/"/>
            </providers>
        </profile>
        <roleManager enabled="false">
            <providers>
                <clear/>
                <add name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" connectionStringName="ApplicationServices" applicationName="/"/>
                <add name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" applicationName="/"/>
            </providers>
        </roleManager>
    </system.web>
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true"/>
    </system.webServer>
    <system.serviceModel>
        <bindings>
            <basicHttpBinding>
        <binding name="BasicHttpBinding_IService">
          <security mode="Transport">
            <transport clientCredentialType="None" proxyCredentialType="None" realm="" />
            <message clientCredentialType="Certificate" algorithmSuite="Default" />

           </security>
        </binding>
            </basicHttpBinding>
        </bindings>
        <client>
            <endpoint address="http://10.0.2.141/Services/SunSetSunRiseService/Service.svc" binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IService" contract="ServiceReference1.IService" name="BasicHttpBinding_IService"/>
        </client>
    </system.serviceModel>
</configuration>

我已尝试实施相关问题中的建议,但尚未找到任何帮助。

【问题讨论】:

    标签: c# .net wcf iis deployment


    【解决方案1】:

    在您的 web.config 中,将端点 URL 更改为 https://...

    【讨论】:

      【解决方案2】:

      您可以使用Mex binding 代替这个。

      除了 mex 绑定,还有其他几种选择。

      点击以下链接结帐>>

      http://www.codeproject.com/Articles/36705/7-simple-steps-to-enable-HTTPS-on-WCF-WsHttp-bindi

      【讨论】:

      • 感谢您的回复。还有其他更简单的选择吗?
      猜你喜欢
      • 2011-01-27
      • 2021-11-03
      • 1970-01-01
      • 2012-07-18
      • 2015-11-19
      • 2012-02-19
      • 2010-12-14
      • 1970-01-01
      • 2012-04-09
      相关资源
      最近更新 更多