提供的 URI 方案'http' 无效;预期“https”
Posted
技术标签:
【中文标题】提供的 URI 方案\'http\' 无效;预期“https”【英文标题】:provided URI scheme'http' is invalid; expected 'https'提供的 URI 方案'http' 无效;预期“https” 【发布时间】:2010-12-14 00:43:26 【问题描述】:我有一个托管在 IIS 6.0 中的 RESTful Web 服务,我可以在浏览器中浏览该服务。当我尝试通过客户端控制台应用程序访问相同的服务时,它给了我以下错误:
"provided URI scheme'http' is invalid; expected 'https', Parameter name: Via"
我的 WebService web.config 有这样的设置:
<system.serviceModel>
<services>
<service behaviorConfiguration="ServiceBehavior" name="TestAPI">
<endpoint address="" behaviorConfiguration="RESTFriendly" binding="webHttpBinding" contract="ITestAPI" />
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
<behaviors>
<endpointBehaviors>
<behavior name="RESTFriendly">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
我的客户端应用程序有 App.config,我从中获取地址:
<appSettings>
<add key="WEBSERVICE" value="URL"/>
在 Main 方法中:
WebChannelFactory<ITestAPI> cf = new WebChannelFactory<IAPI>(baseAddress);
WebHttpBinding wb =cf.Endpoint.Binding as WebHttpBinding;
wb.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
wb.Security.Mode = WebHttpSecurityMode.Transport;
cf.Credentials.UserName.UserName = "usermane";
cf.Credentials.UserName.Password = "password";
ITestAPI channel = cf.CreateChannel();
string msg = channel.TestMethod();
当它尝试调用 TestMethod 时,它给了我这个错误。
【问题讨论】:
【参考方案1】:您正在使用以下行将安全设置为传输模式,即 HTTPS:
wb.Security.Mode = WebHttpSecurityMode.Transport;
baseAddress
的值是 HTTP 还是 HTTPS 地址?
【讨论】:
这就是问题所在。您指定需要安全传输,但 HTTP 不是安全传输。 这个设置也可能出现在 web.config 中,像这样的元素中:以上是关于提供的 URI 方案'http' 无效;预期“https”的主要内容,如果未能解决你的问题,请参考以下文章
从服务中获取错误“提供的 uri 方案'https'是无效的预期'http”
提供的 URI 方案“https”无效;调用 Web 服务时预期为“http”
自定义绑定:提供的 URI 方案“https”无效;预期的“http”。参数名称:via