12

У нас есть веб-приложение ASP.NET 5 в нашем решении.ASP.NET 5 веб-приложение в роли Azure Web?

Обычно мы можем щелкнуть правой кнопкой мыши элемент «Роли» Cloud Service и добавить новую роль из существующего проекта в решении.

Но он не может тождественность этот проект в качестве веб-роли:

Add Web Role Project in solution...

Как мы можем принять проект ASP.NET 5 в Azure Web роли?

Edit: Мы используем Azure SDK 2.7

ответ

3

К сожалению, мы не поддерживаем WebRoles на данный момент. Вы можете * взломать свой путь, но официально поддержки нет. Это означает, что любой взлом, который вы делаете, будет в текстовом редакторе, а не в инструментах.

Однако вместо этого вы можете использовать Azure WebSite. Это полностью поддерживается.

* Возможно, он вообще не работает. Я не знаю никого, кто сделал это.

+0

Хотелось бы узнать, действительно ли это работает. Я дал ему полчаса и решил проверить здравомыслие здесь с ТАК. Учитывая, что даже для .NET 4.6 и гостевой ОС 4 вам необходимо вручную установить netfx 4.6, я думаю, что для этого потребуется какая-то будущая работа. –

+0

Планируете ли вы поддержать это в будущем? – Ender2050

+0

Я не могу использовать WebSite (сейчас WebApp) прямо сейчас, поскольку у меня есть некоторые устаревшие COM-объекты, которые мне нужно зарегистрировать для какого-то старого кода, и я могу сделать это только с помощью облачной службы ... но я хочу использовать последний asp.net а не перекодировать его снова позже ... как спросил Эндер, будет ли поддерживаться WebRoles? – Dan

0

Оказывается, что она официально не поддерживается в качестве веб-роли в это время. Похоже, что он совместим только с веб-приложениями, а не с более старой веб-ролью. Текущая работа документирована на этом сайте: http://www.codeproject.com/Articles/331425/Running-an-EXE-in-a-WebRole-on-Windows-Azure

3

Вам, вероятно, придется самостоятельно создать свой пакет, используя CSPack. Вот пример использования PowerShell и CSPack:

# path to cspack 
$cspackPath = Join-Path $env:ProgramFiles 'Microsoft SDKs\Azure\.NET SDK\v2.7\bin\cspack.exe' 

$PackagePath = 'c:\mycloudpackage.cspkg' 
$serviceDefinitionFile = 'c:\myProject\ServiceDefinition.csdef' 
$webRoleName = 'MyWebRole' 
$webRolePath = 'c:\myProject' 
$webRoleEntryPoint = 'MyWebRole.dll' 

# define the cspack parameters 
$cspackParameter = @(
     "/out:$PackagePath", 
     $serviceDefinitionFile, 
     "/role:$webRoleName;$webRolePath;$webRoleEntryPoint", 
     "/sites:$webRoleName;Web;$webRolePath" 
    ) 

# execute cspack 
& $cspackExe @cspackParameter 

Он также позволяет размещать несколько сайтов на одном веб-роли.

+0

Ссылку вы предоставили не указывает ни на что, в частности. Не могли бы вы предоставить немного больше информации или обновить ссылку? –

+1

Я думаю, что сценарию больше не нужно объяснять. Однако я обновил ссылку. –

+0

Я следую этому сценарию без '$ webRoleEntryPoint', и я продолжаю получать ошибку' CloudServices077: нужно указать pshyical каталог для виртуального пути Web/of role webrole1'. Я указываю его на каталог облачного облака, в котором содержится 'ServiceDefinition.csdef'. –

1

Edit: Не может быть сделано с Azure Storage Emulator ...

я действительно боролся с этим, как я нашел в документации, серьезно бедных, без соответствующих примеров, так что вот полный пример моих сценариев и файлов для кого-либо еще , основанный на ответе Мартина Брандла. Вам не нужно webRoleEntryPoint только для веб-роли. Используется только для рабочих ролей.

  • Создайте новый пустой облачный сервис в своем проекте. Это создаст пустые файлы ServiceConfigiguration.Cloud.csfg, ServiceConfigiguration.Cloud.csfg и ServiceDefinition.csdef для вас, а также папку с пустыми ролями. Вы также можете добавить роль web/worker, чтобы визуальная студия могла создать в них конфигурацию, а затем просто изменить их соответствующим образом.

  • Измените эти файлы (изменить physicalDirectory к своему усмотрению):

ServiceDefinition.csdef:

<?xml version="1.0" encoding="utf-8"?> 
<ServiceDefinition name="SoundVast.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6"> 
    <WebRole name="WebRole1" vmsize="Small"> 
    <Sites> 
     <Site name="Web" physicalDirectory="../SoundVast"> 
     <Bindings> 
      <Binding name="Endpoint1" endpointName="Endpoint1" /> 
     </Bindings> 
     </Site> 
    </Sites> 
    <ConfigurationSettings> 
     <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" /> 
    </ConfigurationSettings> 
    <Endpoints> 
     <InputEndpoint name="Endpoint1" protocol="http" port="80" /> 
    </Endpoints> 
    </WebRole> 
</ServiceDefinition> 

<Site name="Web" physicalDirectory="../SoundVast"> является важным направлением, это physicalDirectory относительно туда, где ваш файл .csdef находится и я хотел сделать свой основной проект SoundVast ролью, которая была расположена на одном уровне вверх.

ServiceConfiguration.Cloud.csfg и ServiceConfiguration.Local.csfg (оба могут быть одинаковым):

<?xml version="1.0" encoding="utf-8"?> 
<ServiceConfiguration serviceName="SoundVast.Azure" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration" osFamily="4" osVersion="*" schemaVersion="2015-04.2.6"> 
    <Role name="WebRole1"> 
    <Instances count="1" /> 
    <ConfigurationSettings> 
     <Setting name="Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString" value="UseDevelopmentStorage=true" /> 
    </ConfigurationSettings> 
    </Role> 
</ServiceConfiguration> 

Важной частью является то, что имя роли соответствует вашей <Role name="WebRole1"> службы файлов определения имени веб-роль.

# path to cspack 
$cspackPath = Join-Path $env:ProgramFiles 'Microsoft SDKs\Azure\.NET SDK\v2.8\bin\cspack.exe' 

$PackagePath = 'C:\Users\Yamo\Documents\visual studio 2015\Projects\SoundVast\SoundVast.Azure\SoundVast.cspkg' 
$serviceDefinitionFile = 'C:\Users\Yamo\Documents\visual studio 2015\Projects\SoundVast\SoundVast.Azure\ServiceDefinition.csdef' 
$webRoleName = 'WebRole1' 
$webRolePath = 'C:\Users\Yamo\Documents\visual studio 2015\Projects\SoundVast\SoundVast.Azure' 

# define the cspack parameters 
$cspackParameter = @(
     $serviceDefinitionFile, 
     "/role:$webRoleName;$webRolePath;", 
     "/sites:$webRoleName;SoundVast;$webRolePath", 
     "/out:$PackagePath" 
    ) 

# execute cspack 
& $cspackPath @cspackParameter 

.cspkg файл должен быть сгенерирован в месте вашего $PackagePath.

 Смежные вопросы

  • Нет связанных вопросов^_^