身份' IIS APPPOOL \ DefaultAppPool' (...),没有权限在应用程序根目录中创建App_Data子目录

时间:2016-03-14 19:34:52

标签: asp.net-mvc asp.net-mvc-4

我有一个需要经过身份验证的用户ID的应用程序,可以与提交的表单一起插入到表中。我使用下面的代码:

var userId = Int32.Parse((string) Membership.GetUser().ProviderUserKey);

但它给了我错误:

Access denied creating App_Data subdirectory

Description: For security reasons, the identity 'IIS APPPOOL\DefaultAppPool' (under which this web application is running), does not have permissions to create the App_Data subdirectory within the application root directory. ASP.NET stores the Microsoft SQL Express Database file used for services such as Membership and Profile in the App_Data subdirectory of your application. 

我没有创造任何东西。我只想获取当前登录用户的UserId。当我得到名称时,它可以工作,代码如下:

var userName = (User.Identity.IsAuthenticated) ? User.Identity.Name : "";

我需要UserId,因为这是我用作UserProfile表的外键约束。

在控制器的Create方法中,我将其指定为:

serialnumber.UserId = userId;
...
db.SerialNumbers.Add(serialnumber);

如何获取当前用户的UserId?

1 个答案:

答案 0 :(得分:0)

MVC中的默认用户设置使用代码优先和应用程序启动脚本来创建数据库。这似乎是必需的(至少默认情况下),无论您是否真的需要它(即使它没有使用数据库,我也遇到了具有所需数据库权限的类似场景:仍然需要权限)。

您可以跳转到帐户模型和EF内容并与之争吵,但IMO只是允许IIS帐户在应用程序目录的根文件夹上拥有完全权限。

右键单击您的应用程序目录,属性,安全性,从列表中选择适当的用户/组,编辑,然后授予完全控制权:

enter image description here