ASP.NET MVC4 简单成员资格不起作用



我有一个MVC4应用程序,它使用sql服务器处理数据。我还有一个简单的成员资格提供者,它的表存储在同一个数据库中,并且都使用相同的连接字符串:

<connectionStrings><add name="bazaConnectionString" connectionString="DataSource=WINSERVER;Initial Catalog=baza;Persist Security Info=True;User ID=visualstudio;Password=xxx" providerName="System.Data.SqlClient" />

当我在visualstudio中测试应用程序时,一切都正常,但当我发布项目并将其连接到IIS8 Web服务器(与sql服务器在同一台计算机上(时,简单的成员身份就不起作用了。

起初,我认为连接字符串有问题,但使用它的应用程序中的其他函数可以正常工作。但一旦我点击像登录这样使用会员资格的东西,就会出现一个错误:

  • WinException 0x80004005找不到文件SqlException 0x80131904
  • 网络相关或实例特定错误

有人能帮我吗,否则我想我将不得不在每个控制器中写入我自己的用户授权逻辑。

更新:尝试了一些操作后,问题似乎出在了visualstudio生成的[Authorize]属性和accountController上。因为如果我调用WebSecurity方法,比如Login,它在其他任何地方都可以工作。

最可能的原因是您的应用程序正在使用另一个数据库来存储简单的成员信息。

浏览您机器上的app_Data文件夹,如果您看到在那里创建了.mdf文件,那么您肯定使用了不同的数据库。当asp.net应用程序试图在app_Data文件夹中搜索要附加的localdb文件,但找不到时,就会出现此问题。在这种情况下,重新配置简单成员身份提供程序以使用给定的连接字符串。

此外,还要确保您没有使用asp.net配置工具来创建用户和角色,因为如果没有指定数据库,它将始终创建localdb。

最新更新