_AppStart.cshtml中的当前上下文错误中不存在“WebSecurity”

时间:2013-07-11 15:03:53

标签: asp.net asp.net-mvc-4 razor

我收到以下编译错误:

Compilation Error

Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately. 

Compiler Error Message: CS0103: The name 'WebSecurity' does not exist in the current context

Source Error:


Line 1:  @{
Line 2:      if (!WebSecurity.Initialized)
Line 3:      {
Line 4:          WebSecurity.InitializeDatabaseConnection("AreaProject", "User", "UserId", "EmailAddress", autoCreateTables: true);

Source File: c:\Projects\area\trunk\dotNet\area.Web\area.Web\_AppStart.cshtml    Line: 2 
enter code here

我的项目正确引用“System.Web”,而我使用“System.Web.Security”的其他文件编译正常。

当我将参考System.Web,System.Web.Pages和System.Web.Razor添加到我的应用程序时,问题就出现了。但我没有对WebMatrix.WebData或WebMatrix.Data进行任何更改。

3 个答案:

答案 0 :(得分:5)

此处引用的WebSecurity类是WebMatrix.WebData而非System.WebSystem.Web.Security的一部分。您可能需要添加对WebMatrix.WebData.dll的引用,事情应该至少超过运行时编译器错误。

您在运行时遇到编译器错误,因为视图通常在应用程序第一次启动时编译,而不是在编译程序集时编译。

答案 1 :(得分:1)

我假设您是第一次尝试运行MVC4应用程序。

MVC4为Internet Application模板添加了大量装配。如果您不使用它,它将成为PIA删除它们。

基本上,如果您不使用WebMatrix或OAuth进行身份验证,则可以注释掉SimpleMembershipInitializer类中的所有内容。

private class SimpleMembershipInitializer
{
  // Comment out everything
}

仅用于测试,您还可以注释掉AccountController内引发异常的每一行。

答案 2 :(得分:1)

旧线程,但万一它可以帮助有人在路上。我不确定为什么它会这样工作,但有时安装像WebMatrix.WebData,WebMatrix.Data这样的包是不够的。安装这些程序集后,当我查看应用程序的Reference部分时,WebMatrix.WebData,WebMatrix.Data仍未显示在那里,尽管它们位于应用程序的BIN文件夹中。我不得不使用Add Reference来制作它们。只有这样,他们出现了,一切都开始起作用。