Как разрешить запись для пользователя AppPoolIdentity в IIS 10 - PullRequest
0 голосов
/ 10 октября 2019

У меня есть веб-сайт, размещенный на IIS 10. На веб-сайте есть функция записи файлов в папку. Я дал разрешение на запись группам IIS_IUSER, IUSER и USER в папке wwwroot. Однако, я все еще вижу исключение отказа в доступе. Один из обходных путей, который я делаю, - это разрешение на запись пользователю AppPoolIdentity (пользователю с именем name в качестве имени моего приложения) в папке веб-сайта. Однако это разрешение удаляется каждый раз, когда я выполняю веб-развертывание.

Что-то мне не хватает? У меня Windows Server 2016.

1 Ответ

1 голос
/ 11 октября 2019

Если вы используете Web Deploy из Visual Studio, публикация перезапишет ACL на сервере, очистив их от унаследованных родительских настроек по умолчанию.

Чтобы избежать обновления ACL каждый раз при публикации веб-приложения.

Вы можете добавить приведенную ниже команду в pubxml вашего PublishProfiles.

 <IncludeSetAclProviderOnDestination>False</IncludeSetAclProviderOnDestination>

Подробности публикуют профиль, как показано ниже:

<?xml version="1.0" encoding="utf-8"?>
<!--
This file is used by the publish/package process of your Web project. You can customize the behavior of this process
by editing this MSBuild file. In order to learn more about this please visit https://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>MSDeploy</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <MSDeployServiceURL>http://localhost:9825/</MSDeployServiceURL>
    <DeployIisAppPath>WebFormApplication</DeployIisAppPath>
    <RemoteSitePhysicalPath />
    <SkipExtraFilesOnServer>True</SkipExtraFilesOnServer>
    <MSDeployPublishMethod>InProc</MSDeployPublishMethod>
    <EnableMSDeployBackup>False</EnableMSDeployBackup>
    <UserName />
    <_SavePWD>False</_SavePWD>
     <IncludeSetAclProviderOnDestination>False</IncludeSetAclProviderOnDestination>
    <PublishDatabaseSettings>
      <Objects xmlns="">
        <ObjectGroup Name="DefaultConnection" Order="1" Enabled="False">
          <Destination Path="" />
          <Object Type="DbCodeFirst">
            <Source Path="DBContext" DbContext="WebFromIdentityTest.Models.ApplicationDbContext, WebFromIdentityTest" Origin="Configuration" />
          </Object>
        </ObjectGroup>
      </Objects>
    </PublishDatabaseSettings>
  </PropertyGroup>
  <ItemGroup>
    <MSDeployParameterValue Include="$(DeployParameterPrefix)DefaultConnection-Web.config Connection String" />
  </ItemGroup>
</Project>
...