12

Nous avons une application Web ASP.NET 5 dans notre solution.Application Web ASP.NET 5 en tant que rôle Web Azure?

En règle générale, nous pourrions faire un clic droit sur l'élément "Rôles" du service Cloud et ajouter un nouveau rôle à partir d'un projet existant dans la solution.

Mais il ne peut pas l'identité de ce projet en tant que rôle Web:

Add Web Role Project in solution...

Comment sommes-nous capables d'accueillir un projet ASP.NET 5 dans un rôle Web Azure?

Edit: Nous utilisons Azure SDK 2.7

Répondre

3

Désolé, nous ne hébergeons pas WebRoles pour le moment. Vous pourriez * être en mesure de pirater votre chemin, mais officiellement, il n'y a pas de soutien. Cela signifie que tout piratage que vous faites, sera dans un éditeur de texte, pas à partir d'outils.

Cependant, vous pouvez utiliser Azure WebSite à la place. C'est entièrement supporté.

* cela peut ne pas fonctionner du tout. Je ne suis au courant de personne qui a fait cela.

+0

Aimerait savoir si quelqu'un ne fonctionne pas. Je lui ai donné une demi-heure et a décidé de vérifier la santé ici avec SO. Étant donné que même pour .NET 4.6 et la famille d'OS invité 4, vous devez installer manuellement netfx 4.6, je pense que cela prendra un peu de travail pour y arriver. –

+0

Y a-t-il des plans pour soutenir cela à l'avenir? – Ender2050

+0

Je ne peux pas utiliser un WebSite (maintenant WebApp) en ce moment car j'ai des objets COM hérités dont j'ai besoin pour m'inscrire pour un code plus ancien et je ne peux le faire qu'avec un Service Cloud ... mais je veux utiliser le dernier asp.net plutôt que de le re-coder à nouveau plus tard ... comme Ender l'a demandé, WebRoles sera-t-il jamais supporté? – Dan

3

Vous devrez probablement créer votre package vous-même en utilisant CSPack. Voici un exemple en utilisant PowerShell et 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 

Il vous permet également d'héberger plusieurs sites sur un rôle Web unique.

+0

Le lien fourni ne pointe pas à quoi que ce soit en particulier. Pourriez-vous s'il vous plaît fournir un peu plus d'informations ou mettre à jour le lien? –

+1

Je pense que le script n'a pas besoin de plus d'explications. Cependant, j'ai mis à jour le lien. –

+0

Je suis ce script sans le '$ webRoleEntryPoint' et je reçois toujours l'erreur' CloudServices077: Nécessité de spécifier le répertoire pshyical pour le chemin virtuel Web/du rôle webrole1'. Je le pointe vers le répertoire cloud azure qui contient 'ServiceDefinition.csdef'. –

1

Edit: Ne peut pas être fait avec Azure Storage Emulator ...

J'ai vraiment eu du mal avec ce que je trouve la documentation sérieusement pauvre sans exemples appropriés, voici donc un exemple complet de mes scripts et fichiers pour quelqu'un d'autre , basé sur la réponse de Martin Brandl. Vous n'avez pas besoin de webRoleEntryPoint pour un rôle Web uniquement. Utilisé uniquement pour les rôles de travail.

  • Créez un nouveau service de cloud vide dans votre projet. Cela générera des fichiers vides ServiceConfigiguration.Cloud.csfg, ServiceConfigiguration.Cloud.csfg et ServiceDefinition.csdef pour vous ainsi qu'un dossier de rôles vides. Vous pouvez également ajouter un rôle web/worker pour permettre à Visual Studio de générer la configuration en eux, puis de les modifier en conséquence.

  • Modifier ces fichiers (changer le physicalDirectory à votre propre):

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"> est la ligne importante, ce physicalDirectory est par rapport à chaque fois que votre fichier .csdef est situé et je voulais faire mon projet principal SoundVast le rôle Web qui était situé à un niveau.

ServiceConfiguration.Cloud.csfg et ServiceConfiguration.Local.csfg (les deux peuvent être les mêmes):

<?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> 

L'important est que le nom du rôle correspond à votre nom de rôle Web des fichiers de définition de service <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 

Un fichier .cspkg devrait maintenant avoir été généré à l'emplacement de votre $PackagePath.