Не удается развернуть ASP.NET MVC с разрешениями на запись для определенной папки - PullRequest
0 голосов
/ 27 мая 2019

Я пытался создать функцию регистрации ошибок для приложения, чтобы при включении в web.config текстовый файл журнала ошибок создавался в папке сервера ~/ErrorLogs.

Однако, несмотря на попытки следовать инструкциям по ссылке ниже, у меня все еще есть сообщение об отказе в разрешении при тестировании этого на сервере IIS (версия 10):

http://sedodream.com/2011/11/08/SettingFolderPermissionsOnWebPublish.aspx

Вот мой целевой файл wpp проекта:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

<Target Name="SetupCustomAcls" AfterTargets="AddIisSettingAndFileContentsToSourceManifest">  
  <ItemGroup>
    <MsDeploySourceManifest Include="setAcl">
      <Path>$(_MSDeployDirPath_FullPath)\ErrorLogs</Path>
      <setAclAccess>Read,Write</setAclAccess>
      <setAclResourceType>Directory</setAclResourceType>
      <AdditionalProviderSettings>setAclResourceType;setAclAccess</AdditionalProviderSettings>
    </MsDeploySourceManifest>
  </ItemGroup>
</Target>

<Target Name="DeclareCustomParameters" AfterTargets="AddIisAndContentDeclareParametersItems">
  <ItemGroup>
    <MsDeployDeclareParameters Include="ErrorLogsSetAclParam">
      <Kind>ProviderPath</Kind>
      <Scope>setAcl</Scope>
      <Match>^$(_EscapeRegEx_MSDeployDirPath)\\ErrorLogs$</Match>
      <Description>Add write permission to the ErrorLogs folder.</Description>
      <DefaultValue>{$(_MsDeployParameterNameForContentPath)}/ErrorLogs</DefaultValue>
      <Value>$(_DestinationContentPath)/ErrorLogs</Value>
      <Tags>Hidden</Tags>
      <Priority>$(VsSetAclPriority)</Priority>
      <ExcludeFromSetParameter>True</ExcludeFromSetParameter>
    </MsDeployDeclareParameters>
  </ItemGroup>
</Target>
</Project>

Кто-нибудь может посоветовать какие-либо дополнительные шаги, которые мне нужно предпринять, чтобы эти разрешения автоматически устанавливались при развертывании веб-приложения?

1 Ответ

1 голос
/ 12 июня 2019

Если вы хотите выполнить это требование, вам нужно выполнить следующие шаги:

  • Выберите приложение в visual studio, щелкните правой кнопкой мыши и выберите «Выгрузить проект».
  • добавить приведенный ниже код в файл .csproj.

Примечание: убедитесь, что вы добавили правильный путь к папке.

 <Target Name="SetupCustomAcls" AfterTargets="AddIisSettingAndFileContentsToSourceManifest">
<ItemGroup>
  <MsDeploySourceManifest Include="setAcl">
    <Path>$(_MSDeployDirPath_FullPath)\test</Path>
    <setAclAccess>Read,Write</setAclAccess>
    <setAclResourceType>Directory</setAclResourceType>
    <AdditionalProviderSettings>setAclResourceType;setAclAccess</AdditionalProviderSettings>
  </MsDeploySourceManifest>
  <MsDeploySourceManifest Include="setAcl">
    <Path>$(_MSDeployDirPath_FullPath)\bin</Path>
    <setAclUser>iusr</setAclUser>
    <setAclAccess>Read</setAclAccess>
    <setAclResourceType>Directory</setAclResourceType>
    <AdditionalProviderSettings>setAclUser;setAclResourceType;setAclAccess</AdditionalProviderSettings>
  </MsDeploySourceManifest>
</ItemGroup>

<Target Name="DeclareCustomParameters" AfterTargets="AddIisAndContentDeclareParametersItems">
<ItemGroup>
  <MsDeployDeclareParameters Include="testSetAclParam">
    <Kind>ProviderPath</Kind>
    <Scope>setAcl</Scope>
    <Match>^$(_EscapeRegEx_MSDeployDirPath)\\test$</Match>
    <Description>Add write permission to the Elmah folder.</Description>
    <DefaultValue>{$(_MsDeployParameterNameForContentPath)}/test</DefaultValue>
    <Value>$(_DestinationContentPath)/test</Value>
    <Tags>Hidden</Tags>
    <Priority>$(VsSetAclPriority)</Priority>
    <ExcludeFromSetParameter>True</ExcludeFromSetParameter>
  </MsDeployDeclareParameters>
  <MsDeployDeclareParameters Include="BinSetAclParam">
    <Kind>ProviderPath</Kind>
    <Scope>setAcl</Scope>
    <Match>^$(_EscapeRegEx_MSDeployDirPath)\\Bin$</Match>
    <Description>Add read permission to the bin folder.</Description>
    <DefaultValue>{$(_MsDeployParameterNameForContentPath)}/bin</DefaultValue>
    <Value>$(_DestinationContentPath)/bin</Value>
    <Tags>Hidden</Tags>
    <Priority>$(VsSetAclPriority)</Priority>
    <ExcludeFromSetParameter>True</ExcludeFromSetParameter>
  </MsDeployDeclareParameters>
</ItemGroup>

  • после добавления кода сохраните файл и перезагрузите проект.

  • выберите проект, щелкните правой кнопкой мыши и выберите «Опубликовать».

  • На странице публикации щелкните значок с надписью IIS, FTP и т. Д.

  • В списке методов публикации выберите Web Deploy: enter image description here

enter image description here

enter image description here

С уважением, Jalpa

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...