c#.net Restful API 适用于调试/发布,但不适用于 IIS

问题描述 投票:0回答:2

我正在 c#.net 中创建一个宁静的 API 应用程序。当我通过 iisexpress 以调试或发布模式编译应用程序时。它按预期工作。我可以使用 fiddler 并在“GET”中传递相应的参数(例如用户凭据),它将连接并获得 200 的响应(http://localhost:49917/v2/Carriers)。当我发布应用程序并将其部署在 IIS 中时 (http://api.test1.net/v2/Carriers)。 IIS 安装在我编译应用程序的同一台计算机上。然后,我使用 fiddler 并传递必要的参数,我得到 503 的响应。我不确定为什么不起作用。我的应用程序池是以下设置: .Net CLR 版本:v4.0 托管管道模式:集成 身份:LocalService(我也尝试过ApplicationPoolIdentity)

当我发布应用程序时,我使用以下发布方法:“文件系统”。

我已在主机文件(windows/system32/drivers/etc/)中添加了 IP 地址和主机名。我不知道为什么不工作。

是什么让 Visual Studio 在调试/发布模式下与发布版本按预期工作不同?

c# web-services asp.net-web-api iis-8
2个回答
0
投票

我想让你们知道我做了你们推荐的事情,并且我找到了答案。我需要在 SQL Server 数据库中添加一个新用户。

》在IIS APPPOOL\ASP.NET v4.0下访问数据库 由于我们使用 ASP.NET v4.0 应用程序池,请确保 IIS APPPOOL\ASP.NET v4.0 已添加到您的数据库服务器 -> 安全性 -> 登录。”

添加这个新用户“IIS APPPOOL pi.test1.net”后,使用 fiddler 的 api get 请求按预期工作,响应为 200。 “api.test1.net”是我在 IIS 中的应用程序池的名称。

谢谢大家的推荐。


0
投票

我遇到了同样的问题,并发现了一篇 Microsoft 文章,内容涉及由 IIS 7.5 或更高版本引起的确切问题,并且已为 SQL Server 打开用户实例。

要将此日志修复到 IIS 服务器并转到应用程序池设置以查看 API 是否无法工作,例如DefaultAppPool V4.0 - 在高级设置下找到流程模型 - 设置加载用户配置文件 = true 部分。

微软帮助页面 https://learn.microsoft.com/en-us/iis/manage/configuring-security/application-pool-identities-and-sql-server-express

© www.soinside.com 2019 - 2024. All rights reserved.