0

我有一个使用 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 网络服务器(与 sql 服务器在同一台计算机上)时,简单的成员资格不起作用。

首先,我认为连接字符串有问题,但应用程序中使用它的其他功能正常工作。但是,一旦我单击使用登录之类的成员资格的东西,它就会出现错误:

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

任何人都可以帮我解决这个问题,否则我想我将不得不将自己的用户授权逻辑写入每个控制器。

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

4

1 回答 1

0

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

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

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

于 2013-03-25T12:41:34.547 回答