在 Visual Studio 2010 中,我正在尝试连接到我编写的 Web 服务。我正在尝试将 Web 服务项目包含在我的 WPF 解决方案中,以便我可以在必要时在本地进行调试,但是我也很乐意将 Web 服务发布到我的本地 IIS 并以这种方式连接到它。
这就是发生的事情。我在我的 WPF 解决方案中包含了 Web 服务项目,所以我有两个项目……WPF 和 WCF Web 服务。我尝试通过打开“添加服务引用”对话框并单击“发现”按钮来向我的 WPF 项目添加服务引用。在地址栏中,会出现这个 uri:
http://localhost:49185/MyAppSqlServerProvider.svc
我在命名空间文本框中为服务命名,然后单击“确定”。然后,我收到以下错误:
System.InvalidOperationException:找不到与具有绑定 WSHttpBinding 的端点的方案 https 匹配的基地址。注册的基地址方案是 [http]。
这似乎是一个常见的错误。我发现了很多关于它以及如何解决它的帖子,但是我无法将这些解决方案应用于我的情况并让它们发挥作用。
这是我的 web.config 文件的相关部分
<system.serviceModel>
<services>
<service behaviorConfiguration="MyAppDataSync.MyAppSqlServerProviderBehavior"
name="MyAppDataSync.MyAppSqlServerProvider">
<endpoint address="" binding="wsHttpBinding" contract="MyAppDataSync.IMyAppSqlServerProvider" bindingConfiguration="wsHttpBindingConfiguration">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost/MyAppSqlServerProvider/"/>
</baseAddresses>
</host>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="MyAppDataSync.MyAppSqlServerProviderBehavior">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="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>
<bindings>
<wsHttpBinding>
<binding name="wsHttpBindingConfiguration" maxReceivedMessageSize="10485760">
<readerQuotas maxArrayLength="10485760" />
<security mode="Transport">
<transport clientCredentialType="None">
<extendedProtectionPolicy policyEnforcement="Never" />
</transport>
</security>
</binding>
</wsHttpBinding>
</bindings>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
顺便说一句:我正在使用传输安全性,因为我需要为此服务使用会话。(例如:[ServiceContract(SessionMode = SessionMode.Required)])
如果有人可以就我的设置中的错误向我提供建议,我将不胜感激。(为什么将“49185”端口号添加到本地主机地址?)
提前感谢您提供的任何帮助。