2014-11-30 3 views
0

Я пытаюсь разместить службу WCF с привязкой net.tcp в IIS в Azure согласно этой статье http://blogs.msdn.com/b/tomholl/archive/2011/06/28/hosting-services-with-was-and-iis-on-windows-azure.aspx. Но это не имеет никакого эффекта.Host WCF service с привязкой net.tcp в IIS в Azure

я пытаюсь сделать на следующие: Создать CloudService Создание WCF веб-роль В веб-ролевой проект создания папки 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:*"} 

Я также добавил net.tcp конечной точки к свойствам роль с портом 808.

Сначала я терплю неудачу, когда пытаюсь опубликовать - циклические запуски и остановки роли. Но когда я отключу Startup.cmd, он публикуется успешно.

Но даже в этом случае я не могу разрешить служебную ссылку.

Что я должен сделать, чтобы эта служба работала?

ответ

1

Убедитесь, что в вашем файле определения сервиса, что ваш executeContext установлен на «повышенный». См. this MSDN post для получения более подробной информации о доступных параметрах.

1

Но когда я отключу Startup.cmd, он успешно публикуется.

Я вижу это много с файлами запуска в облачных сервисах. Если вы используете RDP в свой экземпляр и попытаетесь запустить Startup.cmd из командной строки, вы, скорее всего, увидите проблему. Я готов поспорить (поэтому причина, по которой я предоставляю это как ответ, а не комментарий), заключается в том, что кодировка Starup.cmd и/или Rolestart.ps1 неправильно интерпретируется на компьютере, развернуто. При сохранении этих файлов вам нужно сохранить их, используя кодовую страницу 65001 (подпись UTF 8 без подписки), а не по умолчанию 1252. Сделайте это, и она должна решить вашу проблему.

Я покажу, как это сделать в своем блоге, а также пошаговое решение для того, что вы пытаетесь сделать в http://rickrainey.com/2013/08/30/hosting-a-wcf-service-in-an-azure-web-role-with-http-tcp-endpoints/. И если вы заинтересованы в обеспечении безопасности вашего WCF-сервиса, вы можете проверить 2-й пост в http://rickrainey.com/2013/09/18/securing-a-wcf-service-in-an-azure-web-role-with-http-tcp-endpoints-2/.

+0

Здравствуйте, Рик! Когда я начинаю эту работу, я начинаю с вашей статьи, но я не могу ее реализовать. Я сохраняю эти два файла в unicode. И когда я предоставляю по пути вашей статьи к Srartup.cmd, как .. \ Startup \ Startup.cmd, когда я пытаюсь опубликовать, я вижу ошибку, что этот файл не может быть найден. Если вы можете, дайте мне ссылку на фиктивный проект, как в статье. – IComparable

+0

В конце моего сообщения есть ссылка с полным решением в GitHub. https://github.com/rickrain/WCF-In-Azure-WebRole –