我在运行 IIS7 的 Windows 服务器上有一个 pdf 文件,我将其用作模板来创建可打印/离线版本的 Web 表单。我使用 .ashx 处理程序在 APS.NET 应用程序中访问它。最初它运行良好,直到我转到生产环境,它才给我Access to the path 'D:\inetpub\site\My PDF.pdf' is denied.
首先,我尝试更改应用程序池标识,以防出现权限问题。我还为该标识添加了完全控制权限。这样做也会破坏较低环境中的权限。当将应用程序池切换回原始状态(ApplicationPoolIdentity)时,它仍然不起作用。
我通过 找到该文件HttpContext.Current.Server.MapPath
,它按预期工作。然后我使用FileStream existingFileStream = new FileStream(fileNameExisting, FileMode.Open)
打开文件通过 iTextSharp 进行编辑。该文件具有“网络服务”权限。
任何帮助都将不胜感激。如果您需要更多信息,请告诉我。
如果此网站不适合回答此问题,我深表歉意。如果是,请告诉我,我会将其移至正确的网站。
编辑:
以下是生产环境中通过 icacls 获得的文件的权限。MYDOMAIN、CustomAppIdentity、WEBSERVER 和 LabManagers 的名称已更改,以确保安全。
MYDOMAIN\CustomAppIdentity:(F)
NT AUTHORITY\NETWORK SERVICE:(F)
NT AUTHORITY\Authenticated Users:(I)(RX)
NT AUTHORITY\SYSTEM:(I)(F)
WEBSERVER\LabManagers:(I)(M)
BUILTIN\Administrators:(I)(F)
BUILTIN\Users:(I)(RX)
NT SERVICE\TrustedInstaller:(I)(F)
编辑:活动信息
Event code: 4011
Event message: An unhandled access exception has occurred.
Event time: 7/1/2015 11:07:56 AM
Event time (UTC): 7/1/2015 6:07:56 PM
Event ID: 9c4a06e4465744da8d76e27f3d954c30
Event sequence: 48
Event occurrence: 3
Event detail code: 0
Application information:
Application domain: /LM/W3SVC/8/ROOT/MyProject-1-130802388056279071
Trust level: Full
Application Virtual Path: /MyProject
Application Path: D:\inetpub\parent-site\MyProject\
Machine name: MYSERVER
Process information:
Process ID: 4236
Process name: w3wp.exe
Account name: IIS APPPOOL\MyProject
Request information:
Request URL: http://parentsite.url/MyProject/PdfHandler.ashx
Request path: /MyProject/PdfHandler.ashx
User host address: 159.1.15.73
User:
Is authenticated: False
Authentication Type:
Thread account name: IIS APPPOOL\MyProject
Custom event details:
答案1
处理程序PDFHandler.ashx
使用了错误的语言,vb 而不是 c#,这导致了异常。这不是服务器问题,只是引发了误导性错误。到目前为止,这已经解决了问题。