Bol*_*dan 7 iis .net-core asp.net-core
我正在尝试在 IIS 中托管 .net Core API。当我在 Visual Studio 中运行它时,一切正常。对于部署,我首先将项目发布到一个文件夹,将内容复制到所需位置并在 IIS 中创建一个应用程序。它设置为使用与“无托管代码”一起配置的应用程序池。
当我尝试调用可用端点之一(通过前端或手动)时,我收到 http 500 错误(内部服务器错误。您正在查找的资源存在问题,无法显示。)
我在服务器上找不到任何有意义的日志。只有在事件查看器中我才能找到错误事件。
“无法加载配置。异常消息:需要属性‘processPath’。”
现在我不确定为什么会出现这种情况,因为项目的 Web.config 中的 processPath 属性肯定存在,并且在发布时是这样生成的。看起来像:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<location path="." inheritInChildApplications="false">
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApplication.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
</system.webServer>
</location>
</configuration>
Run Code Online (Sandbox Code Playgroud)
核心托管捆绑包已安装。完全重新启动在此服务器上实际上并不可行(或者至少我想避免它)。因此我跑了
net stop was /y
net start w3svc
Run Code Online (Sandbox Code Playgroud)
获取所做的任何更改。
我很乐意提供有关如何解决此问题的任何想法和建议。预先非常感谢!
因此,我花了比我愿意承认的更长的时间才找到这个问题的原因。但对于任何将来可能会遇到这个问题的人来说,这对我有帮助。
我将该项目托管在 IIS 中所需站点下的两个子文件夹中。所以 Desired_Site -> Subfolder1 -> Subfolder2 -> 实际项目文件。我的猜测是 IIS 无法处理此位置的 web.config 文件。当我搬家时
<system.webServer>
<handlers>
<add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModuleV2" resourceType="Unspecified" />
</handlers>
<aspNetCore processPath=".\MyApplication.exe" stdoutLogEnabled="true" stdoutLogFile=".\logs\stdout" hostingModel="InProcess" />
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
从项目 web.config 文件到 Subolder1 中的 web.config (相应地调整路径)一切都按预期工作。如果您遇到同样的问题,请确保您尝试托管的文件夹结构尽可能平坦。
| 归档时间: |
|
| 查看次数: |
10310 次 |
| 最近记录: |