По умолчанию мы будем вызывать провайдера Web Deploy SetAcl для папки App_Data, это поведение контролируется свойством MSBuild IncludeSetAclProviderOnDestination. Значение по умолчанию для этого свойства - true в % ProgramFiles32% \ MSBuild \ Microsoft \ VisualStudio \ v10.0 \ Web \ Microsoft.Web.Publishing.targets . Если вы хотите предотвратить вызов поставщика SetAcl, вы можете просто установить для этого свойства значение false при публикации. Для этого выполните следующие действия.
- В том же каталоге, что и ваш проект, создайте файл с именем {ProjectName} .wpp.targets (, где {ProjectName} - это имя вашего проекта веб-приложения )
- Внутри файла вставьте содержимое MSBuild, которое находится под этим списком
- Перезагрузите проект в Visual Studio (VS кэширует файлы проекта в памяти, поэтому этот кэш необходимо очистить).
{ProjectName} .wpp.targets
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludeSetAclProviderOnDestination>false</IncludeSetAclProviderOnDestination>
</PropertyGroup>
</Project>
Внутри этого файла вы можете видеть, что я объявляю это свойство и присваиваю ему значение False. После того, как у вас есть этот файл, он будет автоматически получен нашим процессом публикации как из Visual Studio, так и из любых операций публикации из командной строки.
Можете ли вы попробовать это и сообщить мне, если у вас есть другие проблемы?