C# 无法部署具有特定文件夹写入权限的ASP.NET MVC
我一直在尝试为应用程序创建错误日志功能,以便在C# 无法部署具有特定文件夹写入权限的ASP.NET MVC,c#,asp.net-mvc,iis-10,C#,Asp.net Mvc,Iis 10,我一直在尝试为应用程序创建错误日志功能,以便在web.config中启用时,在服务器路径~/ErrorLogs文件夹中创建错误日志文本文件 但是,尽管尝试按照下面链接上的说明进行操作,但在IIS服务器(版本10)上测试时,我仍然收到一条“权限被拒绝”消息: 以下是我的项目目标wpp文件: <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="4.0" xmlns="http://schemas.micros
web.config
中启用时,在服务器路径~/ErrorLogs
文件夹中创建错误日志文本文件
但是,尽管尝试按照下面链接上的说明进行操作,但在IIS服务器(版本10)上测试时,我仍然收到一条“权限被拒绝”消息:
以下是我的项目目标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>
$(\u MSDeployDirPath\u FullPath)\ErrorLogs
读,写
目录
setAclResourceType;setAclAccess
提供者路径
setAcl
^$(\u EscapeRegEx\u MSDeployDirPath)\\错误日志$
向ErrorLogs文件夹添加写入权限。
{$(\u MsDeployParameterNameForContentPath)}/ErrorLogs
$(\u DestinationContentPath)/ErrorLogs
隐藏的
$(VsSetAclPriority)
真的
是否有人可以建议我需要采取的任何其他步骤,以便在部署web应用程序时自动设置这些权限?如果要实现此要求,您需要遵循以下步骤:
- 在VisualStudio中选择应用程序,右键单击并选择“卸载项目”
- 在.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>
$(\u MSDeployDirPath\u FullPath)\test
读,写
目录
问候,,
Jalpa你能分享被删除的错误信息快照和示例代码来重现这个问题吗?嗨@Panchal,如果我今天下班回来的话,我可以这样做。交易是,我故意制造了另一个错误,这样我就可以启动我的错误书写程序。但是,焦点错误表示asp.net需要权限才能写入文件夹。因此,我不完全确定这样的日志记录将有助于准确完成什么。重要的是,每次web部署时都必须手动更改这一文件夹的权限,以便开始错误写入。我只是注意到我正在使用FTP部署方法。我必须使用Web部署方法才能工作吗?是的,您需要使用Web部署方法来工作代码。FTP会将文件上传到FTP服务器(可以是任何处理FTP的操作系统)。我有我的服务器的IP,但它的DNS是本地到它自己的网络,而不是到WWW。我注意到这个本地DNS到它的网络,atm.affirmhealthcenter.com,是无法识别的。我该怎么办?好的,对不起。我明白了。但是现在我使用MySQL作为数据库。Web部署似乎只支持OLE DB/SQL Server???刚刚开始工作。非常感谢你的帮助!
<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>