-2

我创建了一个运行良好的 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 将用于服务(例如 Membership 和 Profile)的 Microsoft SQL Express 数据库文件存储在应用程序的 App_Data 子目录中。

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

点击添加

在“输入要选择的对象名称”框中,输入“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>

这里是神秘的部分。 根本没有 App_Data 目录......嘿......毕竟......为什么首先应该有,我没有使用一个,我有自己的服务器处理成员资格。

如果那里有一颗善良的心,你会伸出一两根或十根帮助的手指吗?

4

2 回答 2

1

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

于 2013-07-24T14:07:38.590 回答
0

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

制作身份网络服务

创建文件夹 App_Data 并授予对NetworkService的可写访问权限

在您的 SQL 数据库中添加一个用户NT AUTHORITY\NETWORK SERVICE并授予它对您的 Membership 表的可写访问权限。

发布后仍然需要注销/登录才能获得角色访问权限,只是摆脱了丑陋的错误

于 2013-07-24T16:58:59.533 回答