Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 与Windows Process Activation服务的致命通信错误_Asp.net_Authentication_Iis - Fatal编程技术网

Asp.net 与Windows Process Activation服务的致命通信错误

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

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

HTTP错误503。服务不可用

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

进程服务应用程序池“MyNewTestAppPool”与Windows进程激活服务发生严重通信错误

我调用的控制器非常复杂:

public class ExampleController : ApiController
{
    [HttpGet]
    public bool GetTrue()
    {
        return true;
    }
}
因此,这不可能是由于代码中无休止的循环导致的堆栈溢出问题。我担心这在认证和授权链中是一个无止境的循环

对在同一服务器上正确部署的另一个应用程序的主要更改是,此应用程序应该有大多数控制器需要针对本地AD进行身份验证,而只有一个控制器不需要身份验证,而其他应用程序要么总是需要身份验证,要么从不需要身份验证

为了实现这种混合模式,我做了以下工作:

  • 在Web.config中,我添加了
  • 在IIS中,我启用了匿名身份验证和Windows身份验证
  • Global.asax.cs
    中,我向所有控制器添加了authorized属性:
    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中清理和重建,然后再次部署该应用程序之后。。。世界跆拳道联盟!?