【问题标题】:Host WCF service with net.tcp binding in IIS in Azure在 Azure 的 IIS 中使用 net.tcp 绑定托管 WCF 服务
【发布时间】:2015-01-28 16:23:44
【问题描述】:

我正在尝试根据这篇文章http://blogs.msdn.com/b/tomholl/archive/2011/06/28/hosting-services-with-was-and-iis-on-windows-azure.aspx 在 Azure 的 IIS 中托管一个带有 net.tcp 绑定的 WCF 服务。但它没有任何作用。

我尝试执行以下操作: 创建云服务 创建 WCF 网络角色 在 web-role 项目中创建文件夹 Startup 并在其中放置两个文件: 启动.cmd

    powershell -command "set-executionpolicy Unrestricted" >> out.txt

RoleStart.ps1

    import-module WebAdministration 

    # Starting the listener service 
    $listenerService = Get-WmiObject win32_service -filter "name='NetTcpActivator'" 
    $listenerService.ChangeStartMode("Manual")
    $listenerService.StartService()
    $listenerService = Get-WmiObject win32_service -filter "name='NetTcpPortSharing'" 
    $listenerService.ChangeStartMode("Manual")
    $listenerService.StartService()

    $WebRoleSite = (Get-WebSite "*webrole*").Name
    Get-WebApplication -Site $WebRoleSite | Foreach-Object { $site = "IIS:/Sites/$WebRoleSite" +                               $_.path; Set-ItemProperty $site -Name EnabledProtocols 'http,net.tcp'}
    New-ItemProperty "IIS:/Sites/$WebRoleSite" -name bindings -value          @{protocol="net.tcp";bindingInformation="808:*"}

我还使用端口 808 将 net.tcp 端点添加到角色属性。

当我尝试发布时第一次失败 - 角色循环启动和停止。但是当我禁用 Startup.cmd 时,它会成功发布。

但即使在这种情况下,我也无法解析服务引用。

我必须做什么才能使这项服务起作用?

【问题讨论】:

    标签: c# wcf azure net.tcp azure-cloud-services


    【解决方案1】:

    确保在您的服务定义文件中将您的 executionContext 设置为“提升”。有关可用选项的更多详细信息,请参阅this MSDN post

    【讨论】:

      【解决方案2】:

      但是当我禁用 Startup.cmd 时,它会成功发布。

      我在云服务中的启动文件中经常看到这一点。如果您 RDP 进入您的实例并尝试从命令提示符运行 Startup.cmd,那么您可能会看到问题。我愿意打赌(因此我提供这个作为答案而不是评论的原因)是 Starup.cmd 和/或 Rolestart.ps1 的编码在您的云服务所在的机器上没有被正确解释部署到。保存这些文件时,您需要使用代码页 65001(UTF 8 w/out signature)而不是默认的 1252 来保存它们。这样做应该可以解决您的问题。

      我在我的博客中展示了如何做到这一点,并在http://rickrainey.com/2013/08/30/hosting-a-wcf-service-in-an-azure-web-role-with-http-tcp-endpoints/ 上为您尝试做的事情提供了一个分步解决方案。如果您有兴趣保护您的 WCF 服务,您可能需要查看http://rickrainey.com/2013/09/18/securing-a-wcf-service-in-an-azure-web-role-with-http-tcp-endpoints-2/ 的第二个帖子。

      【讨论】:

      • 你好瑞克!当我开始这项工作时,我从你的北极开始,但我无法实现它。我将这两个文件保存在 unicode 中。当我根据你的文章提供 Srartup.cmd 的路径时,如 ..\Startup\Startup.cmd,当我尝试发布时,我看到找不到该文件的错误。如果可以,请给我一个虚拟项目的链接,如文章中所示。
      • 我的帖子末尾有一个链接,其中包含 GitHub 中的完整解决方案。 github.com/rickrain/WCF-In-Azure-WebRole
      猜你喜欢
      • 2011-07-21
      • 1970-01-01
      • 2011-10-24
      • 2011-10-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-24
      • 1970-01-01
      相关资源
      最近更新 更多