1

在 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”端口号添加到本地主机地址?)

提前感谢您提供的任何帮助。

4

1 回答 1

0

您需要更改您的基地址以指定“https”而不是“http”。

于 2012-07-06T15:00:57.087 回答