【问题标题】:Deploying Asp.net Core 3.1 does not work on Windows server部署 Asp.net Core 3.1 在 Windows 服务器上不起作用
【发布时间】:2020-07-08 05:22:32
【问题描述】:

我有这个在 VS2019 预览版上开发的 Asp.net Core 3.1。 基本上它是一个带有引用程序集和一些 nuget 的 blazor 服务器端应用程序。

发布到文件夹后,它在 VS2019 和我的 IIS 上运行良好。 问题是当我将该文件夹移动到安装了 IIS 和所有内容的 Windows 服务器计算机时。 出现 500 代码错误。

我在这里注意到的一件事..服务器中的 log_error.txt 文件指出了一个异常 ,以及那个异常-它是什么-显示了 startup.cs 文件的错误行以及我的笔记本电脑目录路径!

我的意思是它显示了这个C:/mrmeeez/..../Startup.cs line 411

但此路径在 windows server 机器中不存在 它应该是F:/.... somthing/Startup.cs line 411

我不知道它是否与问题有关..或者我的程序集和 nuget 没有正确传送到服务器

windows 服务器机器工作正常,我尝试了 blazor 应用程序模板,它运行良好。 我需要你们的帮助,谢谢!

【问题讨论】:

    标签: asp.net-core iis windows-server-2012 blazor-server-side iis-10


    【解决方案1】:

    好的,我找到了

    我不确定这是否与 asp.net core 3.1 有关 因为我在 2.1 个月前部署了 asp.net core,它很好

    无论如何,我在最终发布时使用了开发异常页面来查看导致错误的原因并显示了这一点

    UnauthorizedAccessException:对路径“C:\Windows\system32\config\systemprofile\AppData\Local\ASP.NET\DataProtection-Keys”的访问被拒绝。

    在搜索之后,我在 github 上找到了一个人的答案 似乎此应用程序池的用户 IIS_IUSRS(默认情况下)没有访问该路径的权限

    要解决这个问题,以下两种之一:

    1-授予 IIS_IUSRS 访问系统文件的权限-不推荐-

    2-通过转到 应用程序池 -> 右键单击​​您的应用程序 -> 高级设置 -> 进程模型部分然后更改身份,将应用程序池的用户更改为 IIS 中的 LocalSystem 帐户

    参考:https://github.com/dotnet/aspnetcore/issues/1983

    谢谢!

    【讨论】:

    • 不推荐选项 1,但您可以授予实际应用程序池标识足够的权限来解决该问题。DataProtection-Keys。选项 2 很疯狂,因为没有人应该使用 LocalSystem,除非他/她知道发生了什么。 docs.microsoft.com/en-us/iis/manage/configuring-security/…
    • 如果您知道该应用程序,选项 2 并不疯狂,否则它可能是恶意软件选项 1,您基本上授予每个应用程序池不必要的权限,这是安全威胁
    • “如果你知道这个应用程序”很有趣,因为网络应用程序通常是闯入的第一道门。我想知道你能如何“了解”一个应用程序,考虑到它的安全性依赖于这么多部分,操作系统/网络框架/应用程序本身,漏洞无处不在。无论如何,你可以非常自信,坏事永远不会发生在你身上。我还评论了您对选项 1 的断言,因为首先不应使用 IIS_IUSRS。是什么阻止您使用实际的应用程序池标识?大多数组织都有严格的规则并使用专用的服务帐户。
    • 这是我的应用程序,我相信我不会伤害我的客户服务器我在问题中明确表示这是我开发的应用程序,我部署它是这样的“”如果你知道应用程序“很有趣”实际上并不有趣,如果您仔细阅读问题,您自己说“选项 2 很疯狂,因为没有人应该使用 LocalSystem,除非他/她知道发生了什么”是的,我知道发生了什么上
    猜你喜欢
    • 1970-01-01
    • 2018-06-30
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    相关资源
    最近更新 更多