ASP.NET MVC 4 Доступ к пути App_Data запрещен

После публикации сайта у меня появляется следующая ошибка:

System.UnauthorizedAccessExceptionAccess to the path 'C:\inetpub\MySite\App_Data' is denied.

Оказывается, это потому, что он не может получить доступ к App_Data \ ASPNETDB.MDF. Это потому, что его не существует, поскольку мой сайт не использует его. Я проверил свой локальный компьютер, и там есть папка App_Data с базой данных, но она не включена в мою сборку в VS. Однако, если я удалю его, он будет воссоздан при запуске сайта в VS.

После этого сайт работает нормально, когда кажется, что ошибка исчезла сама собой, но это происходит каждый раз при развертывании.

Нигде в коде на это нет ссылки. Как / почему он создается при запуске приложения и как его остановить?

Я использую SimpleMembership со всеми данными, хранящимися в базе данных SQL Server.


person Nick Reeve    schedule 09.04.2014    source источник
comment
как вы инициализируете простое членство? вы говорите ему использовать вашу существующую базу данных? потому что похоже, что он просто пытается создать новую базу данных.   -  person Matt Tabor    schedule 10.04.2014
comment
Покажите свой web.config. Скорее всего, у вас есть параметр, который сообщает ASP.NET, что вы все еще используете старый поставщик членства до SimpleMembership.   -  person Kevin Junghans    schedule 10.04.2014
comment
Какую часть web.config вы хотите видеть? В нем нигде нет упоминания о членстве.   -  person Nick Reeve    schedule 16.04.2014
comment
Возможный дубликат Доступ к пути ' c: \ inetpub \ wwwroot \ myapp \ App_Data 'запрещен   -  person devlin carnate    schedule 21.03.2017
comment
Я думаю, что на это отвечает stackoverflow.com/questions/14695840 /   -  person Dave    schedule 18.04.2017


Ответы (2)


У меня была эта проблема раньше. когда вы хотите опубликовать свое приложение, если папка app_data была пустой, она не копируется в опубликованную. поэтому перед публикацией скопируйте файл в папку app_data, затем опубликуйте свое приложение ... или вы можете проверить наличие для создания внутри кода:

var folder = System.Web.HttpContext.Current.Server.MapPath("~/App_Data/");
if (!Directory.Exists(folder)) 
    Directory.CreateDirectory(folder);
person Masoud Ghaffari    schedule 25.05.2015
comment
вы можете использовать этот код в Global.asax = ›метод запуска приложения - person Masoud Ghaffari; 17.09.2015
comment
ваше решение решает другую ошибку о пути, которую нельзя найти, но после того, как она создана визуальной студией или вручную, появляется другая ошибка, доступ запрещен, у пользователя IIS нет доступа, но я не знаю, почему. - person Muflix; 10.02.2017
comment
кстати, я просто пытаюсь поместить этот код в global.asax application_start, и он не работает - person Muflix; 10.02.2017

Попробуйте перейти в свойство папки App_Data и добавить пользователя ASPNET с правами чтения и записи

Доступ к пути 'c: \ inetpub \ wwwroot \ myapp \ App_Data 'запрещен

person Avorsa    schedule 09.04.2014
comment
Но моему сайту не нужна развернутая папка App_Data? - person Nick Reeve; 09.04.2014