Windows进程激活服务导致致命通信错误

时间:2016-10-13 13:24:53

标签: asp.net authentication iis

我有一个.NET WebAPI应用程序在我的开发机器的IIS上本地工作,但是如果我在服务器上部署它,我就会收到错误

  

HTTP错误503.该服务不可用。

每当我尝试访问API时。同时,AppPool停止(是的,它已正确启动并正确运行,直到我进行API调用)并且我在事件查看器中收到错误:

  

为应用程序池“MyNewTestAppPool”提供服务的进程与Windows进程激活服务发生致命的通信错误。

我打电话的控制器非常复杂:

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]属性。

不确定那里发生了什么,有人知道发生了什么或如何调试这个?

1 个答案:

答案 0 :(得分:0)

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