簡體   English   中英

在Azure中的IIS中使用net.tcp綁定托管WCF服務

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM