iis 与Windows进程激活服务发生严重通信错误

nkcskrwz  于 2023-05-07  发布在  Windows
关注(0)|答案(1)|浏览(203)

我有一个. NETWebAPI应用程序在我的开发机器的IIS上本地工作,但是如果我将它部署到服务器上,我会得到错误
HTTP错误503。此服务不可用。
每当我尝试访问API时。与此同时,AppPool停止(是的,它已经正确启动并正确运行,直到我进行API调用),我在事件查看器中看到错误:
为应用程序池“MyNewTestAppPool”提供服务的进程与Windows Process Activation Service发生严重通信错误。
我称之为控制器是一个非常复杂的控制器:

public class ExampleController : ApiController
{
    [HttpGet]
    public bool GetTrue()
    {
        return true;
    }
}

所以这不可能是由我代码中的无限循环引起的堆栈溢出问题。我担心这是身份验证和授权链中的一个无休止的循环。
对在同一服务器上正确部署的另一个应用程序的主要更改是,此应用程序应使大多数控制器需要针对本地AD进行身份验证,只有一个控制器不需要-而其他应用程序要么始终需要身份验证,要么从不需要。
为了实现这种混合模式,我做了以下工作:

  • 在Web.config中,我添加了<authentication mode="Windows" />
  • 在IIS中,我启用了匿名身份验证和Windows身份验证
  • Global.asax.cs中,我将AuthorizeAttribute添加到所有控制器:GlobalConfiguration.Configuration.Filters.Add(new System.Web.Http.AuthorizeAttribute());
  • 应该在没有认证的情况下可访问的单个函数已经设置了[AllowAnonymous]属性。

不知道那里发生了什么,有人知道发生了什么或者如何调试它吗?

afdcj2ne

afdcj2ne1#

确保\IIS_IUSRS(IIS 7.x)具有对应用程序文件夹的读访问权限。确保正在使用的应用程序池标识位于IIS_IUSRS组中(例如IIS APPPOOL\DefaultAppPool)

相关问题