我创建了一个运行良好的MVC 4 Web应用程序。
我添加了一行
@if (User.IsInRole("Administrators"))
{
<td>Entered by</td>
}
当地没有问题。
清理它......或者硬发布它(在控制器中发生任何变化)和 WHAM !!
拒绝访问创建App_Data子目录
描述:出于安全考虑,身份'IIS APPPOOL \ ASP.NET v4.0'(运行此Web应用程序),没有 在应用程序中创建App_Data子目录的权限 根目录。 ASP.NET存储Microsoft SQL Express数据库文件 用于App_Data中的成员资格和配置文件等服务 您的应用程序的子目录。
要授予必要的权限,请按照下列步骤操作:在Windows中 资源管理器,导航到您的应用程序的目录。创建一个文件夹 命名为“App_Data”:右键单击,选择“新建”菜单项,选择“文件夹” 子菜单项,然后键入“App_Data”(不带引号)。右键点击 在“App_Data”子目录中,在您的应用程序中选择 “属性”菜单项。在打开的“属性”对话框中, 选择“安全”标签。
点击添加
在“输入要选择的对象名称”框中,输入“IIS” APPPOOL \ ASP.NET v4.0'(不含引号)。
单击“确定”
确保选择了帐户名称,然后在“允许”下,选中 写
单击“确定”
版本信息:Microsoft .NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.272
当我退出并重新登录该网站时,错误消失,该页面效果很好。
我使用的内置成员资格指向本地服务器,由以下
表示在LocalHost上:
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial
Catalog=aspnet-P****aker-2013062000841;
Integrated Security=SSPI" providerName="System.Data.SqlClient" />
关于制作:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;Initial
Catalog=aspnet-Prop*****30******1;
User Id=Pr###A;Password=K###3;" providerName="System.Data.SqlClient"
xdt:Transform="SetAttributes" xdt:Locator="Match(name)" />
</connectionStrings>
这是神秘的部分。 根本没有App_Data目录......嘿......毕竟...为什么首先应该有,我没有使用一个,我有自己的服务器处理成员资格。
如果那里有一颗善良的心,你不会伸出一两个或十个手指。
答案 0 :(得分:1)
您正在使用SQL Express,它在App_Data
中为其数据库创建数据文件。当Entity Framework尝试在生产中创建数据库时,您会收到该错误,因为信任级别不允许它将数据文件存储在其设置的位置。在生产中使用真正的SQL Server实例。这将解决这个错误,但它也正是你所做的。除了开发和测试之外,不要使用SQL Express。
答案 1 :(得分:0)
转到应用程序池中的高级设置。
使身份 NetworkService
创建文件夹App_Data并授予对 NetworkService
的可写访问权限在SQL数据库中添加用户 NT AUTHORITY \ NETWORK SERVICE ,并在您的Membership表上授予其可写访问权。
发布后仍需要注销/获取角色访问权限,只是摆脱了丑陋的错误