我的神秘App_Data目录

时间:2013-07-24 14:02:59

标签: asp.net-mvc

我创建了一个运行良好的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目录......嘿......毕竟...为什么首先应该有,我没有使用一个,我有自己的服务器处理成员资格。

如果那里有一颗善良的心,你不会伸出一两个或十个手指。

2 个答案:

答案 0 :(得分:1)

您正在使用SQL Express,它在App_Data中为其数据库创建数据文件。当Entity Framework尝试在生产中创建数据库时,您会收到该错误,因为信任级别不允许它将数据文件存储在其设置的位置。在生产中使用真正的SQL Server实例。这将解决这个错误,但它也正是你所做的。除了开发和测试之外,不要使用SQL Express。

答案 1 :(得分:0)

转到应用程序池中的高级设置。

使身份 NetworkService

创建文件夹App_Data并授予对 NetworkService

的可写访问权限

在SQL数据库中添加用户 NT AUTHORITY \ NETWORK SERVICE ,并在您的Membership表上授予其可写访问权。

发布后仍需要注销/获取角色访问权限,只是摆脱了丑陋的错误