Asp.net 与Windows Process Activation服务的致命通信错误
我有一个.NET WebAPI应用程序在我的开发人员机器的IIS上本地工作,但是如果我在服务器上部署它,就会出现错误 HTTP错误503。服务不可用 每当我尝试访问API时。同时,AppPool停止(是的,它已正确启动并正确运行,直到我进行API调用),我在事件查看器中得到错误: 进程服务应用程序池“MyNewTestAppPool”与Windows进程激活服务发生严重通信错误 我调用的控制器非常复杂:Asp.net 与Windows Process Activation服务的致命通信错误,asp.net,authentication,iis,Asp.net,Authentication,Iis,我有一个.NET WebAPI应用程序在我的开发人员机器的IIS上本地工作,但是如果我在服务器上部署它,就会出现错误 HTTP错误503。服务不可用 每当我尝试访问API时。同时,AppPool停止(是的,它已正确启动并正确运行,直到我进行API调用),我在事件查看器中得到错误: 进程服务应用程序池“MyNewTestAppPool”与Windows进程激活服务发生严重通信错误 我调用的控制器非常复杂: public class ExampleController : ApiController
public class ExampleController : ApiController
{
[HttpGet]
public bool GetTrue()
{
return true;
}
}
因此,这不可能是由于代码中无休止的循环导致的堆栈溢出问题。我担心这在认证和授权链中是一个无止境的循环
对在同一服务器上正确部署的另一个应用程序的主要更改是,此应用程序应该有大多数控制器需要针对本地AD进行身份验证,而只有一个控制器不需要身份验证,而其他应用程序要么总是需要身份验证,要么从不需要身份验证
为了实现这种混合模式,我做了以下工作:
- 在Web.config中,我添加了
- 在IIS中,我启用了匿名身份验证和Windows身份验证
- 在
中,我向所有控制器添加了authorized属性:Global.asax.cs
GlobalConfiguration.Configuration.Filters.Add(new System.Web.Http.AuthorizeAttribute())代码>
- 无需身份验证即可访问的单个函数已设置了
属性[AllowAnonymous]
不确定那里发生了什么,有人知道发生了什么或如何调试吗?确保\IIS\u IUSRS(IIS 7.x)具有对应用程序文件夹的读取权限。确保您正在使用的应用程序池标识位于IIS_IUSRS组中(例如IIS APPPOOL\DefaultAppPool)确保\IIS_IUSRS(IIS 7.x)具有对应用程序文件夹的读取权限。确保您正在使用的应用程序池标识位于IIS_IUSRS组(例如IIS APPPOOL\DefaultAppPool)中,这样,如果您删除身份验证并仅允许匿名访问,则此api在IIS上正常工作?否,此api在我的开发人员计算机上的IIS上正常工作,且应用程序的配置与在服务器上的配置相同。如果从IIS设置中删除Windows身份验证,则不会发生任何更改。如果从代码中删除Authorize属性,则不会发生任何更改。如果我同时删除这两个,我可以以匿名用户的身份访问所有内容。应用程序池被禁用真是奇怪。您是否尝试过使用不同的应用程序池或其他东西?你还说同一台服务器上有其他应用程序启用了windows auth,并且它们不会使进程崩溃吗?是的,我就是这么说的。由于该旧应用程序处于“生产中”,我在第一次崩溃后将新应用程序移动到另一个(新)应用程序池中,以避免重复崩溃生产应用程序池。这并没有解决它。我在一小时前看到这个问题消失了(不确定我是否应该称之为“修复”),在重新启动我的计算机(它想安装Windows更新),然后在Visual Studio中清理和重建,然后再次部署该应用程序之后。。。世界跆拳道联盟!?因此,如果您删除身份验证并仅允许匿名访问,则此api可以在IIS上正确工作?否,此api可以在我的开发人员计算机上的IIS上正确工作,并且应用程序的配置与服务器上的配置相同。如果从IIS设置中删除Windows身份验证,则不会发生任何更改。如果从代码中删除Authorize属性,则不会发生任何更改。如果我同时删除这两个,我可以以匿名用户的身份访问所有内容。应用程序池被禁用真是奇怪。您是否尝试过使用不同的应用程序池或其他东西?你还说同一台服务器上有其他应用程序启用了windows auth,并且它们不会使进程崩溃吗?是的,我就是这么说的。由于该旧应用程序处于“生产中”,我在第一次崩溃后将新应用程序移动到另一个(新)应用程序池中,以避免重复崩溃生产应用程序池。这并没有解决它。我在一小时前看到这个问题消失了(不确定我是否应该称之为“修复”),在重新启动我的计算机(它想安装Windows更新),然后在Visual Studio中清理和重建,然后再次部署该应用程序之后。。。世界跆拳道联盟!?