2016-03-14 54 views
0

我有一個應用程序需要經過身份驗證的用戶ID,以便插入表中提交表格。我用下面的代碼:身份'IIS APPPOOL DefaultAppPool'(...),沒有權限在應用程序根目錄中創建App_Data子目錄

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 : ""; 

我需要的用戶ID,因爲這是我使用的外鍵約束的用戶配置表:當我的名字,下面的代碼它的工作原理。

在控制器的創建方法,我將其指定爲:

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

如何獲取當前用戶的用戶ID?

+1

但要創建的東西,試圖登錄並創建一個新的用戶,你正在App_Data下創建一個數據庫。您的文件夾不允許默認應用程序池有權執行此操作。 –

+0

我插入記錄到我的表,SerialNumber表。聲明'var userId = Int32.Parse((string)Membership.GetUser()。ProviderUserKey);'只是獲取UserId的值。這個UserId將被插入到SerialNumber表中。 – Eric

回答

0

MVC中的默認用戶設置使用代碼優先和應用程序啓動腳本來創建數據庫。這似乎是必需的(至少在默認情況下),無論你是否真的需要它(我已經遇到了類似的情況,即使它沒有使用數據庫,但仍需要權限)。

你可以跳進賬戶模型和EF的東西,並與它纏繞在一起,但國際海事組織只是讓你的應用程序目錄的根文件夾的IIS帳戶的完整權限更容易。

右鍵單擊您的應用程序目錄,性能,安全性,從列表中選擇相應的用戶/組,編輯,然後再授予完全控制:

enter image description here

相關問題