Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 标识“IIS APPPOOL\DefaultAppPool”(…)无权在应用程序根目录中创建App_数据子目录_Asp.net Mvc_Asp.net Mvc 4 - Fatal编程技术网

Asp.net mvc 标识“IIS APPPOOL\DefaultAppPool”(…)无权在应用程序根目录中创建App_数据子目录

Asp.net mvc 标识“IIS APPPOOL\DefaultAppPool”(…)无权在应用程序根目录中创建App_数据子目录,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我有一个应用程序,需要将经过身份验证的用户id与提交的表单一起插入到表中。我使用以下代码: var userId = Int32.Parse((string) Membership.GetUser().ProviderUserKey); var userName = (User.Identity.IsAuthenticated) ? User.Identity.Name : ""; 但它给了我一个错误: Access denied creating App_Data subdirectory

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

var userId = Int32.Parse((string) Membership.GetUser().ProviderUserKey);
var userName = (User.Identity.IsAuthenticated) ? User.Identity.Name : "";
但它给了我一个错误:

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 userId = Int32.Parse((string) Membership.GetUser().ProviderUserKey);
var userName = (User.Identity.IsAuthenticated) ? User.Identity.Name : "";
我需要UserId,因为我使用它作为UserProfile表的外键约束

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

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

如何获取当前用户的用户ID?

MVC中的默认用户设置首先使用代码和应用程序启动脚本来创建数据库。这在默认情况下似乎是必需的,至少不管您是否真的需要它。我遇到过类似的情况,需要数据库权限,即使它没有使用数据库:仍然需要权限

您可以跳进Accounts模型和EF之类的东西,并与之争论,但在我看来,只允许IIS帐户对应用程序目录的根文件夹拥有完全权限更容易

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


但您正在创建一些东西,通过尝试登录并创建一个新用户,您正在App_Data下创建一个数据库。您的文件夹不允许默认应用程序池具有执行此操作的权限。我正在将记录插入到我的表SerialNumber表中。语句var userId=Int32.Parsestring Membership.GetUser.ProviderUserKey;仅获取用户ID的值。然后将该用户ID插入SerialNumber表中。