使用Authorize属性时,Entity Framework不使用我的连接字符串?

时间:2014-09-18 05:20:42

标签: asp.net-mvc entity-framework

在我的开发机器上一切正常但是当我部署到我的生产环境时,我用AuthorizeAttribute保护的控制器并没有使用我的连接字符串

从该控制器执行代码时(我登录授权后)得到的错误包含:

The connection string specifies a local Sql Server Express instance using a database location within the application's App_Data directory

我没有使用本地SQL server express,而其他不受authorize属性保护的功能可以正常使用正确的数据库。我只有一个连接字符串,我知道它正确定义。删除authorize属性允许控制器正常工作到正确的数据库(在我的开发和生产环境中),所以我非常确定它与属性有关。我只是看不出它会如何发挥作用。

授权声明:

 [Authorize(Roles="Admins")]
public class AdminController : Controller 
. . .

生产环境中的连接字符串:

<connectionStrings>
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=11.11.111.1111,1533;Initial Catalog=Blah;User ID=WTRDb;Password=FooBar" />
</connectionStrings>

Context Constructor:

public EFDbContext() : base("DefaultConnection")
{
. . . 

这是在MVC5项目中使用EF6

1 个答案:

答案 0 :(得分:0)

看起来这是MVC4中一个非常常见的问题,但MVC5解决方案却有所不同。最后,我通过在这篇文章中找到解决方案解决了这个问题:http://forums.asp.net/t/1952572.aspx?Problem+using+roles+with+MVC5将这行添加到web.config模块部分

<remove name="RoleManager" />