在我的开发机器上一切正常但是当我部署到我的生产环境时,我用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
答案 0 :(得分:0)
看起来这是MVC4中一个非常常见的问题,但MVC5解决方案却有所不同。最后,我通过在这篇文章中找到解决方案解决了这个问题:http://forums.asp.net/t/1952572.aspx?Problem+using+roles+with+MVC5将这行添加到web.config模块部分
<remove name="RoleManager" />