2014-05-14 2 views
2

J'essaie d'étendre le modèle webrole par défaut. J'ai ajouté un nouveau modèle d'entité et créé un cadre squelette pour cela. Lorsque le chargement de la page d'index est tenté, une erreur de serveur s'affiche.Erreur de compilation avec Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint

"Le type 'Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint' est défini dans un assembly qui n'est pas référencé Vous devez ajouter une référence à l'assembly 'Microsoft.WindowsAzure.ServiceRuntime, Version = 2.3.0.0, Culture = neutre, PublicKeyToken = 31bf3856ad364e35 '. "

J'ai vérifié que le WebRole incluait cette référence et c'est le cas. Je peux corriger cette erreur en définissant cette propriété Copy Local à true.

Si je fais cela, les changements d'erreur pour « Le nom du type « modèles »n'existe pas dans le type « WebRole.WebRole » »

Les deux erreurs sont lancées à partir du fichier Index.cshtml, specificially sur la ligne:

public class _Page_Views_BankAccount_Index_cshtml: System.Web.Mvc.WebViewPage<IEnumerable<WebRole.Models.BankAccount>> {

ce qui est la cause?

Répondre

2

Il vous manque des références dans votre compilation de vue.

Le compilateur vue utilise un ensemble différent de références et de faire votre travail de modèle vous devez ajouter les références dans votre web.config

Par exemple:

<configuration> 
    <system.web> 
    <assemblies> 
     <add assembly="YourAssembly, Version=4.0.0.0, Culture=neutral, PublicKeyToken=TOKENKEY" /> 
    </assemblies> 
    </system.web> 
</configuration> 
+1

Merci, vous m'avez mis sur la bonne voie. Le modèle par défaut a créé l'espace de noms WebRole et une classe également appelée WebRole. La vue confondait WebRole.Models en tant que propriété de la classe et non en tant que classe dans un assembly. En déplaçant BankAccount vers un autre espace de noms, la référence a été trouvée. Merci pour votre aide – Venatu

2

Je sais qu'il est vieux mais pourrait aider quelqu'un d'autre.

Cette erreur se produit en raison d'un conflit dans le projet par défaut pour Windows Azure Cloud Service lorsque le projet Web est créé avec le nom WebRole (qui place le projet dans le même espace de noms que la DLL Microsoft.WindowsAzure.ServiceRuntime). Pour fixer il y a deux options faciles:

remplacer ce code

@model WebRole.Models.RegisterViewModel 

et ajoutez l'instruction à l'aide et votre modèle sans namesapce

@using WebRole.Models 
@model RegisterViewModel 

Ou plutôt, on peut ajouter un espace de noms dans la web.config dans le dossier des vues (pas celui de la racine)

<pages pageBaseType="System.Web.Mvc.WebViewPage"> 
    <namespaces> 
     ----- 
     <add namespace="WebRole.Models" /> 
    </namespaces> 
</pages> 

Et sur vos vues il suffit de remplacer le code existant par

@model RegisterViewModel 

Espérons que cela aide.

1

Avez-vous installé la bonne version d'Azure Tools? Je sais pour moi, je reçois seulement cette erreur quand il me manque la bibliothèque Azure Tools.