Я пытался создать функцию ведения журнала ошибок для приложения, чтобы при включении в 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>
Может ли кто-нибудь посоветовать какие-либо дополнительные шаги, которые мне нужно предпринять, чтобы эти разрешения устанавливались автоматически при развертывании веб-приложения?
Привет @Panchal, я могу сделать, если сегодня вернусь с работы. Дело в том, что я намеренно создал еще одну ошибку, чтобы запустить процедуру записи ошибок. Однако ошибка фокуса говорит о том, что asp.net нужны разрешения для записи в папку. Поэтому я не совсем уверен, что такое ведение журнала поможет точно выполнить.
Важно то, что очень раздражает необходимость вручную изменять разрешения для этой папки каждый раз, когда я развертываю веб-сайт, чтобы можно было начать запись ошибок.





Если вы хотите реализовать это требование, вам необходимо выполнить следующие шаги:
Примечание: убедитесь, что вы добавили правильный путь к папке.
<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 и т. д.
С уважением, Джалпа
Я только что заметил, что использую метод развертывания FTP. Должен ли я использовать метод веб-развертывания, чтобы это работало?
да, вам нужно использовать метод веб-развертывания для работы с вашим кодом. FTP будет загружать файлы на FTP-сервер (может быть любая ОС, поддерживающая FTP).
У меня есть IP-адрес моего сервера, но его DNS является локальным для его собственной сети, а не для WWW. Я заметил, что этот локальный DNS в своей сети atm.affirmhealthcenter.com не распознается. Как бы я обойти это?
Хорошо, извини. Я понял это. Но сейчас я использую MySQL в качестве базы данных. Кажется, что Web Deploy поддерживает только OLE DB/SQL Server???
Просто заставил это работать. Большое спасибо за Вашу помощь!
не могли бы вы поделиться снимком сообщения об ошибке и примером кода, чтобы воспроизвести проблему?