Asp.net mvc 我神秘的应用程序数据目录

Asp.net mvc 我神秘的应用程序数据目录,asp.net-mvc,Asp.net Mvc,我创建了一个运行良好的MVC4Web应用程序 我加了一行 @if (User.IsInRole("Administrators")) { <td>Entered by</td> } @if(User.IsInRole(“管理员”)) { 输入者 } 本地没有问题 清理它…或硬发布它(控制器中的任何更改)和WHAM 创建App_数据子目录时拒绝访问 描述:出于安全原因,标识“IIS APPPOOL\ASP.NET” v4.0“(此web应用程序在其下运行)

我创建了一个运行良好的MVC4Web应用程序

我加了一行

@if (User.IsInRole("Administrators"))
{
     <td>Entered by</td>
} 
@if(User.IsInRole(“管理员”))
{
输入者
} 
本地没有问题

清理它…或硬发布它(控制器中的任何更改)和WHAM

创建App_数据子目录时拒绝访问

描述:出于安全原因,标识“IIS APPPOOL\ASP.NET” v4.0“(此web应用程序在其下运行)没有 在应用程序中创建App_数据子目录的权限 根目录。ASP.NET存储Microsoft SQL Express数据库文件 用于App_数据中的会员资格和个人资料等服务 应用程序的子目录

要授予必要的权限,请执行以下步骤:在Windows中 在浏览器中,导航到应用程序的目录。创建文件夹 命名为“应用程序数据”:右键单击,选择“新建”菜单项,选择“文件夹” 子菜单项,然后键入“应用程序数据”(不带引号)。右击 在应用程序的“App_Data”子目录中,选择 “属性”菜单项。在打开的“属性”对话框中, 选择“安全”选项卡

单击添加

在“输入要选择的对象名称”框中,输入“IIS” APPPOOL\ASP.NET v4.0'(不带引号)

单击“确定”

确保已选择帐户名,然后在“允许”下选中 写

单击“确定”

版本信息:Microsoft.NET Framework版本:4.0.30319; ASP.NET版本:4.0.30319.272

当我注销并重新登录到该网站时,错误消失,该页面工作正常。

我使用的是指向本地服务器的内置成员资格,如下所示

在本地主机上:

<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>

关于生产:

<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_数据目录…嘿…毕竟…为什么一开始就应该有,我没有使用,我有自己的服务器处理成员资格


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

你正在使用SQL Express,它在
应用程序数据中为其数据库创建数据文件。当Entity Framework尝试在生产环境中创建数据库时,会出现该错误,因为信任级别不允许它将数据文件存储在设置为的位置。在生产环境中使用真实的SQL Server实例。这将修复此错误,但这也是您所做的。不要将SQL Express用于开发和测试以外的任何用途。

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

使身份网络服务

创建文件夹应用程序数据并授予对网络服务的可写访问权

在SQL数据库中添加用户NT AUTHORITY\NETWORK SERVICE,并在成员表上授予其可写访问权限


发布后仍然需要注销/登录才能获得角色访问权限,刚刚消除了难看的错误

但是那里没有App_数据目录?登录/注销后,页面最终会工作?它正在尝试创建目录。这就是它失败的原因。我不知道。您使用的是不同的数据源作为成员身份,因此它试图在一个实例而不是另一个实例中创建数据库是有原因的。不过,这不是重点。错误是明确的,解决方案是要么更改信任级别(坏主意),手动创建目录并授予IIS用户对它的读/写访问权(仍然不是一个好主意),要么使用真实的数据库进行生产。嗯……有趣的是,我更关心刷新登录会话的独特之处,这导致问题消失,但我希望现在尝试您的服务器更改方法+1,非常感谢!