2014-05-14 177 views
2

我想扩展默认的webrole模板。我添加了一个新的实体模型并为其创建了一个框架框架。当尝试加载索引页时,会显示服务器错误。缺少编译错误Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint

“类型'Microsoft.WindowsAzure.ServiceRuntime.RoleEntryPoint'在未引用的程序集中定义,您必须添加对程序集'Microsoft.WindowsAzure.ServiceRuntime,Version = 2.3.0.0,Culture = neutral,公钥= 31bf3856ad364e35' “。

我有双重检查,WebRole包含此引用,它确实。我可以通过将此引用Copy Local属性设置为true来解决此错误。

如果我这样做,错误修改

这两个错误自Index.cshtml文件扔在了“之类的名字‘模式’不存在‘WebRole.WebRole’类型的存在”,specificially行:

公共类_Page_Views_BankAccount_Index_cshtml:System.Web.Mvc.WebViewPage<IEnumerable<WebRole.Models.BankAccount>> {

是什么原因造成的?

回答

2

您在视图编辑中缺少引用。

视图编译器使用一组不同的引用,并且使你的模型的工作,你需要在你的web.config

添加引用例如:

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

谢谢你,让我走上正轨。默认模板已经创建了命名空间WebRole和一个名为WebRole的类。该视图混淆了WebRole.Models作为类的属性,而不是程序集中的类。通过将BankAccount移到另一个名称空间,找到了参考。感谢您的帮助 – Venatu

2

我知道这是老但可能会帮助其他人。

当使用名称WebRole(将项目放入与Microsoft.WindowsAzure.ServiceRuntime dll相同的名称空间)创建Web项目时,由于Windows Azure Cloud Service的默认项目中存在冲突而发生此错误。 要修复有两种简单的方式:

将这段代码

@model WebRole.Models.RegisterViewModel 

,并添加using语句和你的模型没有namesapce

@using WebRole.Models 
@model RegisterViewModel 

或替代一个可以在添加命名空间web.config里面的views文件夹(不是根目录下的)

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

并在您的意见只是取代现有的代码

@model RegisterViewModel 

希望它有帮助。

1

是否安装了正确版本的Azure Tools?我知道,当我错过Azure Tools库时,我只会遇到这个错误。