我有一个ASPNet核心应用程序,该应用程序可以在带有Visual Studio的IIS Express上正确运行。
我试图在IIS Server 8.5(带有文件夹)上部署此应用程序。如果我访问根URI(/),则我的页面正确显示(状态200)。但是,如果我尝试访问其他URI(例如/ Meetings),则会收到404错误。
另外,我尝试将应用程序池的标识更改为管理员,并且可以正常工作。但是我知道这不是最佳实践,我找不到为什么它不能与应用程序池标识一起使用。
在某些配置下,请问我是否要指定文件:
web.config:
true
访问日志:
<configuration>
<!-- To customize the asp.net core module uncomment and edit the following section.
For more info see https://go.microsoft.com/fwlink/?linkid=838655 -->
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<handlers>
<remove name="aspNetCore"/>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
</handlers>
<aspNetCore processPath="%LAUNCHER_PATH%" arguments="%LAUNCHER_ARGS%" stdoutLogEnabled="false" stdoutLogFile=".\logs\stdout" forwardWindowsAuthToken="false" />
</system.webServer>
</configuration>
我还尝试过更改文件夹的权限,但是不起作用。
如果有人已经遇到了这个问题,我准备尝试其他解决方案。
谢谢
编辑:
此处显示404错误的详细日志:https://paste.ee/p/4PBzY
编辑2:
我在Windows事件中找到了此信息,但是我有一个连接字符串,并且我的SQL Server已与本地帐户配置在一起。
答案 0 :(得分:1)
确保您已执行以下步骤:
No Managed code
IIS AppPool\{AppPoolName}
必须对已发布的网站文件夹具有读取权限。将您的应用程序池的标识更改为 ApplicationPoolIdentity 。对于应用程序池标识,将有一个名称为IIS AppPool\{Applicaiton Pool name}
的用户帐户,例如对于DefaultAppPool,用户帐户为IIS AppPool\DefaultAppPool
,因此您可以在已发布的应用程序文件夹上允许对Applicaiton Pool用户的读/写访问权限答案 1 :(得分:0)