[英]Host WCF service with net.tcp binding in IIS in Azure
我试图根据本文http://blogs.msdn.com/b/tomholl/archive/2011/06/28/hosting-services-with-was在Azure中的IIS中托管带有net.tcp绑定的WCF服务和iis-on-windows-azure.aspx 。 但这没有任何作用。
我尝试执行以下操作:创建CloudService创建WCF Web角色在Web角色项目中,创建文件夹Startup并在其中放置两个文件: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终结点添加到Role属性。
当我尝试发布时第一次失败-角色循环开始和停止。 但是,当我禁用Startup.cmd时,它将成功发布。
但是即使在这种情况下,我也无法解析服务引用。
我必须做些什么才能使该服务正常工作?
确保在服务定义文件中将executionContext设置为“ elevated”。 有关可用选项的更多详细信息,请参见此MSDN帖子 。
但是,当我禁用Startup.cmd时,它将成功发布。
我在云服务中的启动文件中看到了很多。 如果您将RDP放入实例并尝试在命令提示符下运行Startup.cmd,则很可能会看到问题。 我愿意打赌(因此,我将其作为答案而不是提供评论的原因)是,Starup.cmd和/或Rolestart.ps1的编码在您的云服务所在的计算机上未正确解释部署到。 保存这些文件时,您需要使用代码页65001(UTF 8 w / out签名)而不是默认的1252保存它们。这样做可以解决您的问题。
我在博客中展示了如何执行此操作,还通过http://rickrainey.com/2013/08/30/hosting-a-wcf-service-提供了您要执行的操作的分步解决方案在具有http-tcp-endpoints /的Azure Web角色中 。 如果您有兴趣保护WCF服务,则可以在http://rickrainey.com/2013/09/18/securing-a-wcf-service-in-an-azure-中查看第二篇文章。 web-role-with-http-tcp-endpoints-2 / 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.