首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在IIS上部署ASPNet核心在根用户以外的其他URI上得到了404个错误

问在IIS上部署ASPNet核心在根用户以外的其他URI上得到了404个错误
EN

Stack Overflow用户
提问于 2018-07-18 13:27:14
回答 2查看 8.4K关注 0票数 1

我有一个使用Visual在IIS上正确运行的ASPNet核心应用程序。

我尝试将此应用程序部署到IISServer8.5(带有文件文件夹)上。如果我访问根URI (/),我的页面将正确显示(状态200)。但是,如果我尝试访问其他URI (例如: /Meetings),就会得到404个错误。

另一件事是,我尝试将应用程序池的标识更改为管理员,并且它可以工作。但我知道这不是最好的实践,我也找不出为什么它不使用应用程序池身份。

在下面的一些配置中,询问我是否需要特定的文件:

web.config:

代码语言:javascript
复制
<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>

访问日志:

代码语言:javascript
复制
2018-07-18 13:14:08 ::1 GET /Meetings - 80 - ::1 Mozilla/5.0+(Windows+NT+6.3;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/67.0.3396.99+Safari/537.36 - 404 0 0 1422
2018-07-18 13:22:54 ::1 GET / - 80 - ::1 Mozilla/5.0+(Windows+NT+6.3;+Win64;+x64)+AppleWebKit/537.36+(KHTML,+like+Gecko)+Chrome/67.0.3396.99+Safari/537.36 - 200 0 0 1841

应用程序池配置:

​

我还尝试将权限更改为文件夹,但不起作用。

如果有人已经有了这个问题,我准备尝试不同的解决方案。

谢谢,

编辑:

下面是404错误的详细日志:https://paste.ee/p/4PBzY

编辑2:

我已经在windows事件中找到了这个信息,但是我有一个连接字符串,我的Server与本地帐户混在一起。

​

​

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-19 09:32:16

好吧,我终于找到问题出在哪里了。

在查看事件查看器之后,我看到应用程序试图使用ApplicationPoolIdentity连接到我的Server,就像您在下面的屏幕上看到的那样(对不起,法语屏幕)

​

因此,我刚刚将这个用户添加到具有数据库权限的SQL Server中,并按照Mehmood的建议进行配置(请参阅其他答案),现在它开始工作了!

​

票数 1
EN

Stack Overflow用户

发布于 2018-07-18 17:16:48

确保您执行了以下步骤:

  1. 您需要发布网站,然后将IIS网站指向已发布的文件夹。
  2. 应用程序池必须设置为No Managed code
  3. 应用程序池标识用户IIS AppPool\{AppPoolName}必须具有已发布网站文件夹的读取权限。将应用程序池的标识更改为ApplicationPoolIdentity.对于应用程序池标识,将有名为IIS AppPool\{Applicaiton Pool name}的用户帐户,例如,对于DefaultAppPool,用户帐户是IIS AppPool\DefaultAppPool,因此您可以允许在已发布的应用程序文件夹上对应用程序池用户进行读写访问。

​

​

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51403251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档