Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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
C# 模拟标志导致IIS中出现问题_C#_Asp.net Mvc_Rest_Asp.net Web Api - Fatal编程技术网

C# 模拟标志导致IIS中出现问题

C# 模拟标志导致IIS中出现问题,c#,asp.net-mvc,rest,asp.net-web-api,C#,Asp.net Mvc,Rest,Asp.net Web Api,我的设置是一个用户连接的MVC网站,该网站在后台连接一个RESTWebAPI服务。网站和web服务都需要身份验证,并将首先使用用户Windows身份验证进行身份验证,然后将此身份传递给ADLDS目录声明提供商。我必须查看他们有权执行的操作 当前连接到IIS上托管的MVC网站工作正常,windows凭据经过身份验证,然后获得权限授权,网站运行正常。但当网站调用REST服务时,REST服务会检查身份并获取应用程序池的身份,而不是调用MVC网站的用户的凭据。双跳问题 这是MVC网站的web.confi

我的设置是一个用户连接的MVC网站,该网站在后台连接一个RESTWebAPI服务。网站和web服务都需要身份验证,并将首先使用用户Windows身份验证进行身份验证,然后将此身份传递给ADLDS目录声明提供商。我必须查看他们有权执行的操作

当前连接到IIS上托管的MVC网站工作正常,windows凭据经过身份验证,然后获得权限授权,网站运行正常。但当网站调用REST服务时,REST服务会检查身份并获取应用程序池的身份,而不是调用MVC网站的用户的凭据。双跳问题

这是MVC网站的web.config中的impersonate=false。我已经尝试通过Visual Studio在我的机器上本地运行MVC网站,连接到远程托管的REST服务,并在本地MVC web.config中设置impersonate=true,这是可行的。Ie REST web服务然后通过而不是应用程序池标识获取正确的凭据

但是,如果我在远程服务器IIS上托管的MVC网站的web.config中设置impersonate=true,则该网站根本无法加载。因此,在VisualStudio中工作的东西在通过IIS部署时不起作用。我得到的例外是

01-12-2015 09:52:47,105 [][1] INFO  Centrica.CE.SE.PortalX.MvcApplication - **********************APPLICATION STARTED*****************************
01-12-2015 09:53:10,160 [UK\kerslaj1][5] ERROR Centrica.CE.SE.PortalX.MvcApplication - System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> Microsoft.Practices.Unity.ResolutionFailedException: Resolution of the dependency failed, type = "Centrica.CE.SE.PortalX.Security.IClaimsProvider", name = "(none)".
Exception occurred while: Calling constructor Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider().
Exception is: TypeInitializationException - The type initializer for 'Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider' threw an exception.
-----------------------------------------------
At the time of the exception, the container was:

  Resolving Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider,(none) (mapped from Centrica.CE.SE.PortalX.Security.IClaimsProvider, (none))
  Calling constructor Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider()
 ---> System.TypeInitializationException: The type initializer for 'Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider' threw an exception. ---> System.DirectoryServices.AccountManagement.PrincipalOperationException: An operations error occurred.
 ---> System.DirectoryServices.DirectoryServicesCOMException: An operations error occurred.

   at System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
   at System.DirectoryServices.DirectoryEntry.Bind()
   at System.DirectoryServices.DirectoryEntry.get_AdsObject()
   at System.DirectoryServices.DirectoryEntry.get_Options()
   at System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit()
   --- End of inner exception stack trace ---
   at System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit()
   at System.DirectoryServices.AccountManagement.PrincipalContext.DoApplicationDirectoryInit()
   at System.DirectoryServices.AccountManagement.PrincipalContext.Initialize()
   at System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx()
   at System.DirectoryServices.AccountManagement.PrincipalSearcher.SetDefaultPageSizeForContext()
   at Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider.SetApplicationClaims()
   at Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider.Initialise()
   --- End of inner exception stack trace ---
   at Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider..ctor()
   at lambda_method(Closure , IBuilderContext )
   at Microsoft.Practices.ObjectBuilder2.DynamicBuildPlanGenerationContext.<>c__DisplayClass1.<GetBuildMethod>b__0(IBuilderContext context)
   at Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.PreBuildUp(IBuilderContext context)
   at Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext context)
   at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides)
   --- End of inner exception stack trace ---
   at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, Object existing, String name, IEnumerable`1 resolverOverrides)
   at Microsoft.Practices.Unity.UnityContainer.DoBuildUp(Type t, String name, IEnumerable`1 resolverOverrides)
   at Microsoft.Practices.Unity.UnityContainerExtensions.Resolve[T](IUnityContainer container, ResolverOverride[] overrides)
   at Centrica.CE.SE.PortalX.Security.AuthenticationManager.Authenticate(String resourceName, ClaimsPrincipal incomingPrincipal)
   at Centrica.CE.SE.PortalX.MvcApplication.Application_PostAuthenticateRequest()
   --- End of inner exception stack trace ---
   at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at System.Web.Util.ArglessEventHandlerProxy.Callback(Object sender, EventArgs e)
   at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)
01-12-2015 09:52:47105[][1]INFO Centrica.CE.SE.PortalX.mvcapapplication-*************************应用程序已启动*****************************
01-12-2015 09:53:10160[UK\kerslaj1][5]错误Centrica.CE.SE.PortalX.mvcapapplication-System.Reflection.TargetInvocationException:调用的目标已引发异常。-->Microsoft.Practices.Unity.ResolutionFailedException:依赖项解析失败,type=“Centrica.CE.SE.PortalX.Security.IClaimsProvider”,name=“(无)”。
调用构造函数Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider()时发生异常。
异常为:TypeInitializationException-“Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider”的类型初始值设定项引发异常。
-----------------------------------------------
发生异常时,容器为:
解析Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider,(无)(从Centrica.CE.SE.PortalX.Security.IClaimsProvider映射,(无))
调用构造函数Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider()
--->System.TypeInitializationException:“Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider”的类型初始值设定项引发异常。-->System.DirectoryServices.AccountManagement.PrincipalOperationException:发生操作错误。
--->System.DirectoryServices.DirectoryServicesCOMException:发生操作错误。
位于System.DirectoryServices.DirectoryEntry.Bind(布尔throwIfFail)
位于System.DirectoryServices.DirectoryEntry.Bind()处
在System.DirectoryServices.DirectoryEntry.get_AdsObject()中
在System.DirectoryServices.DirectoryEntry.get_Options()中
在System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit()中
---内部异常堆栈跟踪的结束---
在System.DirectoryServices.AccountManagement.PrincipalContext.DoLDAPDirectoryInit()中
在System.DirectoryServices.AccountManagement.PrincipalContext.DoApplicationDirectoryInit()中
在System.DirectoryServices.AccountManagement.PrincipalContext.Initialize()中
在System.DirectoryServices.AccountManagement.PrincipalContext.get_QueryCtx()中
在System.DirectoryServices.AccountManagement.PrincipalSearcher.SetDefaultPageSizeForContext()中
在Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider.SetApplicationClaims()上
在Centrica.CE.SE.PortalX.Security.adldsclaismprovider.Initialise()上
---内部异常堆栈跟踪的结束---
在Centrica.CE.SE.PortalX.Security.ADLDSClaimsProvider..ctor()上
在lambda_方法(闭包,IBuilderContext)
在Microsoft.Practices.ObjectBuilder2.DynamicBuildPlanGenerationContext.c__DisplayClass1.b__0(IBuilderContext)上
在Microsoft.Practices.ObjectBuilder2.BuildPlanStrategy.Prebuild(IBuilderContext上下文)上
位于Microsoft.Practices.ObjectBuilder2.StrategyChain.ExecuteBuildUp(IBuilderContext上下文)
在Microsoft.Practices.Unity.UnityContainer.DoBuildUp(类型t,对象存在,字符串名,IEnumerable`1 resolverOverrides)
---内部异常堆栈跟踪的结束---
在Microsoft.Practices.Unity.UnityContainer.DoBuildUp(类型t,对象存在,字符串名,IEnumerable`1 resolverOverrides)
在Microsoft.Practices.Unity.UnityContainer.DoBuildUp(键入t,字符串名,IEnumerable`1 resolverOverrides)
在Microsoft.Practices.Unity.UnityContainerExtensions.Resolve[T](IUnityContainer容器,ResolverOverride[]覆盖)
位于Centrica.CE.SE.PortalX.Security.AuthenticationManager.Authenticate(字符串resourceName,ClaimsPrincipal incomingPrincipal)
在Centrica.CE.SE.PortalX.mvcapapplication.Application\u PostAuthenticateRequest()上
---内部异常堆栈跟踪的结束---
位于System.RuntimeMethodHandle.InvokeMethod(对象目标、对象[]参数、签名符号、布尔构造函数)
位于System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(对象obj,对象[]参数,对象[]参数)
在System.Reflection.RuntimeMethodInfo.Invoke(对象obj、BindingFlags invokeAttr、绑定器绑定器、对象[]参数、CultureInfo区域性)
在System.Reflection.MethodBase.Invoke(对象obj,对象[]参数)处
在System.Web.Util.ArglessEventHandlerProxy.Callback(对象发送方,EventArgs e)
在System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()中
在System.Web.HttpApplication.ExecuteStep(IExecutionStep步骤,布尔值&同步完成)

关于为什么这在我的本地计算机上有效,但在IIS上不起作用,有什么建议吗?

当服务器上的impersonate设置为true时,会记录什么错误?哈