[英]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.