我收到以下编译错误:
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进行任何更改。
答案 0 :(得分:5)
此处引用的WebSecurity类是WebMatrix.WebData
而非System.Web
或System.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来制作它们。只有这样,他们出现了,一切都开始起作用。