【问题标题】:Azure WCF Service Consume Azure WCF ServiceAzure WCF 服务使用 Azure WCF 服务
【发布时间】:2010-11-21 22:16:17
【问题描述】:

我目前有一个包含 Azure WCF 服务和 Windows Phone 7 项目的解决方案。我可以在本地运行开发结构并浏览到我的服务的 url (http://127.0.0.1:81/API/V1.svc)。当我从 Windows Phone 应用程序添加服务引用时,它会发现服务正常,但是当我尝试查看服务上的方法时,我收到错误“无法启动 ASP.NET 开发服务器,因为端口 '50149' 在采用。”如果单击“确定”,则会收到“从地址下载元数据时出错。请验证您输入的地址是否有效。”

我不太明白为什么它会在端口 50149 上发现它,因为我在端口 81 上浏览到它,但我在添加服务时尝试使用端口 81,我得到了

下载“http://localhost:81/API/V1.svc”时出错。 无法连接到远程服务器 无法建立连接,因为目标机器主动拒绝它 127.0.0.1:81 元数据包含无法解析的引用:“http://localhost:81/API/V1.svc”。 在http://localhost:81/API/V1.svc 处没有可以接受消息的端点监听。这通常是由不正确的地址或 SOAP 操作引起的。有关更多详细信息,请参阅 InnerException(如果存在)。 无法连接到远程服务器 无法建立连接,因为目标机器主动拒绝它 127.0.0.1:81 如果在当前解决方案中定义了服务,请尝试构建解决方案并再次添加服务引用。

这是我的服务模型部分

<system.serviceModel>
   <services>
     <service name="DocDemon.API.V1">
       <endpoint name="basicHttpBinding" binding="basicHttpBinding" contract="DocDemon.API.IV1" />
     </service>
   </services>
  <behaviors>
   <serviceBehaviors>
    <behavior name="">
     <serviceMetadata httpGetEnabled="true"  />
     <serviceDebug includeExceptionDetailInFaults="false" />
    </behavior>
   </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
   <bindings>

   </bindings>
 </system.serviceModel>

我需要在这里定义和结束点吗?

这是否与 WP7 项目和 Azure WCF 在同一个解决方案中有关? (当我尝试从 WP7 应用程序添加服务引用时,是否必须运行 WCF?)

【问题讨论】:

  • 您的端点配置是什么样的?我假设您正在运行 Dev Fabric?

标签: wcf windows-phone-7 azure


【解决方案1】:

我将 WP7 应用程序移到了自己的解决方案中,然后当该应用程序在本地 DevFabric 中运行时,它能够正常检测到 Web 服务。当他们在同一个解决方案中时,WP7 应用程序无法找到它。

【讨论】:

    【解决方案2】:

    您是否查看过 MSDN 代码库上的 WCF Azure 示例 known issues?元数据有一个微妙之处,需要进行行为调整。希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      在我在 Azure 中运行的 WCF 中,我在两个地方配置了端点(我的示例在端口 443 上定义了一个安全的 ssl 端点):

      第一次在 web.config 中定义端点合约:

      <system.serviceModel>
          <services>
              <service
                  behaviorConfiguration="CustomValidationBehavior"
                  name="ServiceName">
      
                  <endpoint 
                                      binding="wsHttpBinding"
                                      bindingConfiguration="MembershipBinding"
                                      name="bindingName                                   contract="InterfaceName" />
      

      之后,您还必须确保 Azure 在 ServiceDefinition.csdef 中通过其自己的端点公开您的服务:

      <InputEndpoints>
        <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="CertName" />
      </InputEndpoints>
      

      【讨论】:

        【解决方案4】:

        如果该端口未运行,则无法使用对该端口的引用,将找不到元数据。

        我会说将您的服务器项目移动到 IIS 而不是 Casini,因为它会在 Azure 平台上运行。 我在使用 Azure 和 Casini 时确实遇到了一些在 IIS 上没有发生的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-15
          • 2018-05-04
          • 2011-05-17
          • 2011-09-27
          相关资源
          最近更新 更多