我有一个使用sql server进行数据的MVC4应用程序。我也有简单的成员资格提供程序,它的表存储在同一个数据库中,并且都使用相同的连接字符串:
<connectionStrings><add name="bazaConnectionString" connectionString="DataSource=WINSERVER;Initial Catalog=baza;Persist Security Info=True;User ID=visualstudio;Password=xxx" providerName="System.Data.SqlClient" />
当我在visual studio中测试应用程序时,一切正常,但是当我发布项目并将其附加到IIS8 webserver(与sql server在同一台计算机上)时,简单的成员资格不起作用。
首先我认为连接字符串有问题但是使用它的应用程序中的其他功能正常工作。但是一旦我点击使用像Login这样的会员资格的东西就会出错:
任何人都可以帮助我,否则我想我必须在每个控制器中编写自己的用户授权逻辑。
更新:在尝试了一些事情后,似乎问题在于[Authorize]属性和visual studio生成的accountController。因为如果我在其他任何地方调用WebSecurity方法(如Login)。
答案 0 :(得分:0)
最可能的原因是您的应用程序正在使用另一个数据库来存储简单的成员资格信息。
浏览计算机上的app_Data文件夹,如果您看到在那里创建了.mdf文件,那么您肯定会使用不同的数据库。当asp.net应用程序尝试搜索app_Data文件夹中的localdb文件以进行附加但无法找到时,会出现此问题。在这种情况下,重新配置简单成员资格提供程序以使用给定的连接字符串。
此外,还要确保您没有使用asp.net配置工具来创建用户和角色,因为如果没有指定db,它将始终创建localdb。