gpt4 book ai didi

c# - .NET 核心 2.1 和 EF 框架 2.1

转载 作者:行者123 更新时间:2023-11-30 18:13:55 25 4
gpt4 key购买 nike

我正在尝试替换通过 ODATA 4 向移动应用程序提供信息的 Web 服务。当前应用程序正在使用 EF6 并且可以正常运行。

我随后使用 EF 2.1 和 Core Odata 7.0.1 构建了一个新的 .NET Core 2.1.1。当通过 Visual Studio 2017 界面在 IISExpress 上运行时,一切似乎都在运行。

部署问题?:

问题似乎出在部署到 IIS 服务器上。我安装了所有正确的运行时和托管包。其他使用 EF 2.1 应用程序(网页,而非服务)的 .NET Core 2.1 运行没有问题。但是,此服务将启动 $metadata 页面,并将正确启动初始界面页面。一旦我调用任何具有 EF 连接的 Controller ,我只收到部分页面......事件日志中没有错误我实际收到的唯一“事件”是“Windows 应用程序日志”中的“信息”条目主机 IIS 服务器说;

来源:MSSQLSERVER事件 ID:18456

用户“Domain\Server16$”登录失败。原因:找不到与提供的名称匹配的登录名。 [客户端:192.168.1.16]

SQL 连接字符串在 appsettings.json 文件中,这个连接字符串在 visual studio 本身中工作......所有这些都发生在部署到实际的 IIS 服务器之后,并且只使用这个 web 服务,而不是其他应用程序使用 EF 2.1。

我在开发过程中遗漏了什么吗?这是一个已知的问题?有人知道吗?

解决方案:(某种程度上)

我完全知道 IIS 是运行 .NET Core 应用程序的 Kestrel 服务器的“代理”前端。也就是说,您会认为 IIS(主机)的应用程序身份池无关紧要,因为 .NET Core 应用程序应该是“完全独立的”。嗯...不...事实上,如果您保留 AppPoolIdentity(默认值),就像您对所有以前的 ASP.NET MVC 应用程序所做的那样,然后出于安全原因在 appsettings.json 文件中创建连接字符串,那么这不会工作,因为有一个明显的缺陷(恕我直言)......在我的用例中,Web 服务运行在 SQL Server 后端,你需要给代理,在这种情况下,运行你的服务的 IIS AppPool 访问同一个数据库.所以,现在我必须有两个帐户才能访问后端服务……这在注重安全的世界中似乎很短!

https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS

最佳答案

尽管由 IIS 作为代理前端托管的 .NET Core 应用程序具有短站点的性质,但运行 IIS 代理的 AppPool 似乎需要访问用于数据库的 SQL 帐户所需的同一数据库服务器。 .. 呸!

感谢 Edward(他发表了评论),这让我看到了这篇文章:

https://weblog.west-wind.com/posts/2016/Jun/06/Publishing-and-Running-ASPNET-Core-Applications-with-IIS

关于c# - .NET 核心 2.1 和 EF 框架 2.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51758168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com