Misbehaving custom SharePoint components leading to claims authentication exceptions (tag bz7l)


 

I have mentioned the steps to troubleshoot Claims to Windows NT Service (c2WTS) problems in a previous post (click here). There is also a post to see if the problem is with Active Directory (AD) or c2WTS (click here). After doinf the normal troubleshooting outlined in the previous posts you still have an issue or you suspect the problem is with a custom component, follow one of the methods discussed here.

 

Symptom

In the ULS log you see occasionally the following ULS log entry:

05/27/2012 14:33:34.03 w3wp.exe (0x1144)0x1960 SharePoint Foundation Claims Authentication bz7l Medium
SPSecurityContext.WindowsIdentity: Could not retrieve a valid windows identity for NTName=’CONTOSO\jdoed’, UPN=’jdoed@contoso.com’. UPN is required when Kerberos constrained delegation is used. Exception: System.ServiceModel.Security.SecurityAccessDeniedException: Access is denied.    Server stack trace:    
at System.ServiceModel.Channels.ServiceChannel.ThrowIfFaultUnderstood(Message reply, MessageFault fault, String action, MessageVersion version, FaultConverter faultConverter)   
at System.ServiceModel.Channels.ServiceChannel.HandleReply(ProxyOperationRuntime operation, ProxyRpc& rpc)   
at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)   
at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)   
at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)    Exception rethrown
at [0]:    
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)   
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)   
at Microsoft.IdentityModel.WindowsTokenService.S4UClient.IS4UService_dup.UpnLogon(String upn, Int32 pid)   
at Microsoft.IdentityModel.WindowsTokenService.S4UClient.<>c__DisplayClass1.<UpnLogon>b__0(IS4UService_dup channel)   
at Microsoft.IdentityModel.WindowsTokenService.S4UClient.CallService(Func`2 contractOperation)   
at Microsoft.SharePoint.SPSecurityContext.GetWindowsIdentity().

 

Method 1 – Using a DebugDiag rule to capture dump files and analyze it later

 

Capturing data

Follow instructions here to create a dump file based on ULS tag. The tag of interest is bz7l. Follow instructions in the previous post (click here) and make the following changes:

Step 10:

Use this code instead:

 

Dim Tag1
Dim TargetTag1
TargetTag1 = "bz7l"
Dim PartialText1
PartialText1 = ""
Tag1 = Debugger.Execute("r @$t1=@ecx;.if (@$t1 >> 18 < 24) { r @$t2=@$t1>>18 & 3f; r @$t3=@$t1>>12 & 3f; r@$t4=@$t1>>0c & 3f; r @$t5=@$t1>>6 & 3f;r @$t6=@$t1 & 3f;.printf ""%C%C%C%C%C"",@@c++(@$t2 > 0x19 ? @$t2 + 0x16 : @$t2+'a'),@@c++(@$t3 > 0x19 ? @$t3 + 0x16 : @$t3+'a'),@@c++(@$t4 > 0x19 ? @$t4 + 0x16 : @$t4+'a'),@@c++(@$t5 > 0x19 ? @$t5 + 0x16 : @$t5+'a'),@@c++(@$t6 > 0x19 ? @$t6 + 0x16 : @$t6+'a');} .else { .printf ""%C%C%C%C"", @$t1>>18,@$t1>>10,@$t1>>8,@$t1; };")
WriteToLog "Tag: " & Tag1 'To avoid DebugDiag log flood comment you may remove this line 
' Test if the tag matches
If InStr(Tag1,TargetTag1)>0 Then
 'Only fetch message if necessary
 Dim Message1
 Message1  = ""
 If PartialText1 <> "" Then
   Message1 = Debugger.Execute(".printf ""%mu"",@r9")
   'WriteToLog "Message: " & Message1 'Uncomment this line if you wish to log the message
 End If
 If Message1 = "" Or  InStr(Message1,PartialText1) > 0 Then
  ' You can change the action to log the stack trace for example
   CreateDump "For Tag " & Tag1, false
 End If
End If


Step 17:

Use this code instead:

Dim Tag2
Dim TargetTag2
TargetTag2 = "bz7l"
Dim PartialText2
PartialText2 = ""
Tag2 = Debugger.Execute("r @$t1=@ecx;.if (@$t1 >> 18 < 24) { r @$t2=@$t1>>18 & 3f; r @$t3=@$t1>>12 & 3f; r@$t4=@$t1>>0c & 3f; r @$t5=@$t1>>6 & 3f;r @$t6=@$t1 & 3f;.printf ""%C%C%C%C%C"",@@c++(@$t2 > 0x19 ? @$t2 + 0x16 : @$t2+'a'),@@c++(@$t3 > 0x19 ? @$t3 + 0x16 : @$t3+'a'),@@c++(@$t4 > 0x19 ? @$t4 + 0x16 : @$t4+'a'),@@c++(@$t5 > 0x19 ? @$t5 + 0x16 : @$t5+'a'),@@c++(@$t6 > 0x19 ? @$t6 + 0x16 : @$t6+'a');} .else { .printf ""%C%C%C%C"", @$t1>>18,@$t1>>10,@$t1>>8,@$t1; };")
WriteToLog "Tag: " & Tag2 'To avoid DebugDiag log flood comment you may remove this line 
' Test if the tag matches
If InStr(Tag2,TargetTag2)>0 Then
 'Only fetch message if necessary
 Dim Message2 
Message2 = ""
 If PartialText2 <> "" Then
   Message2 = Debugger.Execute(".printf ""%mu"",@r9")
   'WriteToLog "Message: " & Message2 'Uncomment this line if you wish to log the message
 End If
 If Message2 = "" Or  InStr(Message2,PartialText2) > 0 Then
  ' You can change the action to log the stack trace for example
   CreateDump "For Tag " & Tag2, false
 End If
End If


When the dump is captured, the rule you be marked as complete. Move the dump to your working machine so you can analyze it.

 

Analyzing the data

After capturing the dump, open it in WinDbg, If you do not know how to get WinDbg to work, see this previous post (click here).

 

Verifying the user being impersonating

To see the user being impersonated, simply issue the command !token

0:072> !token
TS Session ID: 0
User: S-1-5-17
Failed to query groups info size
Primary Group: S-1-5-17
Privs: 
 00 0x000000017 SeChangeNotifyPrivilege           Attributes - Enabled Default 
 01 0x00000001d SeImpersonatePrivilege            Attributes - Enabled Default 
 02 0x00000001e SeCreateGlobalPrivilege           Attributes - Enabled Default 
 03 0x000000021 SeIncreaseWorkingSetPrivilege     Attributes - 
Auth ID: 0:3e3
Impersonation Level: Impersonation
TokenType: Impersonation
Is restricted token: no.

 

So the user SID is S-1-5-17. SID is the internal code of a credential, all SIDs with 4 parts are built-in SIDs. This is already a red flag, a domain account user looks like this: S-1-5-21-174793676-37829515-635260011-218252. Why a SID and not the account name? you may ask yourself. The reason is that the information in the dump is stored as SID. If you are in the same domain where the dump was taken or the SID is a well known group or user (i.e. a short SID like the one we saw) you may try to run this instead: !roken –n

0:072> !token -n
*** Friendly name lookup may not work correctly with dumpfiles.
TS Session ID: 0
User: S-1-5-17 (Well Known Group: NT AUTHORITY\IUSR)
Failed to query groups info size
Primary Group: S-1-5-17 (Well Known Group: NT AUTHORITY\IUSR)
Privs: 
 00 0x000000017 SeChangeNotifyPrivilege           Attributes - Enabled Default 
 01 0x00000001d SeImpersonatePrivilege            Attributes - Enabled Default 
 02 0x00000001e SeCreateGlobalPrivilege           Attributes - Enabled Default 
 03 0x000000021 SeIncreaseWorkingSetPrivilege     Attributes - 
Auth ID: 0:3e3
Impersonation Level: Impersonation
TokenType: Impersonation
Is restricted token: no.

 

So, the SID is for group NT AUTHORITY\IUSR which is the anonymous account for IIS 7+ App Pools. This is a very important clue. This means that the call to c2WTS was done without impersonating the Application Pool account. Even though adding this account to the list of users allowed to access c2WTS would work this is not a secure solution. In other words, DO NOT add the IIS anonymous account to the list of allow users in c2WTS. The solution here is to identify which component is not impersonating the Application Pool account.

 

Verifying the misbehaving component not impersonating App Pool account

You can see the managed stack trace using different commands. If you are using NetExt you may issue !wclrstack command. If you want to use sos, run first this command to load the appropriate sos version: .loadby sos clr (notice the dot in the beginning of the command). Then run !clrstack. In the worst case scenario you can also run kpL to show the stack as native.

0:072> .loadby sos clr
 
 
0:072> !clrstack
OS Thread Id: 0x3e80 (72)
(...) Call Site
(...) Microsoft.SharePoint.Diagnostics.ULS+NativeMethods.ULSSendFormattedTrace(UInt32, UInt32, Microsoft.SharePoint.Diagnostics.ULSTraceLevel, System.String, Boolean)
(...) Microsoft.SharePoint.Diagnostics.ULS+NativeMethods.ULSSendFormattedTrace(UInt32, UInt32, Microsoft.SharePoint.Diagnostics.ULSTraceLevel, System.String, Boolean)
(...) DomainBoundILStubClass.IL_STUB_PInvoke(UInt32, UInt32, Microsoft.SharePoint.Diagnostics.ULSTraceLevel, System.String, Boolean)
(...) Microsoft.SharePoint.Diagnostics.ULS.SendTraceImpl(UInt32, Microsoft.SharePoint.Diagnostics.ULSCatBase, Microsoft.SharePoint.Diagnostics.ULSTraceLevel, System.String, System.Object[]) 
(...) Microsoft.SharePoint.Diagnostics.ULS.SendTraceTag(UInt32, Microsoft.SharePoint.Diagnostics.ULSCatBase, Microsoft.SharePoint.Diagnostics.ULSTraceLevel, System.String, System.Object[]) 
(...) Microsoft.SharePoint.SPSecurityContext.GetWindowsIdentity() 
(...) Microsoft.IdentityModel.WindowsTokenService.S4UClient+IS4UService_dup.UpnLogon(System.String, Int32)
(...) Microsoft.IdentityModel.WindowsTokenService.S4UClient.CallService(System.Func`2) 
(...) Microsoft.SharePoint.SPSecurityContext.GetWindowsIdentity() 
(...) Microsoft.SharePoint.Administration.SPFarm.CurrentClaimsUserIsBoxAdministrator(Microsoft.IdentityModel.Claims.IClaimsIdentity) 
(...) Microsoft.SharePoint.Administration.SPFarm.CurrentUserIsBoxAdministrator() 
(...) Microsoft.SharePoint.SPManagedCodeInterop.CanCurrentUserIgnoreThrottle(System.Guid) 
(...) Microsoft.SharePoint.Library.SPRequestInternalClass.GetListItemDataWithCallback2(Microsoft.SharePoint.Library.IListItemSqlClient, System.String, System.String, System.String, System.String, Microsoft.SharePoint.Library.SAFEARRAYFLAGS, Microsoft.SharePoint.Library.ISP2DSafeArrayWriter, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Boolean ByRef)
(...) Microsoft.SharePoint.Library.SPRequestInternalClass.GetListItemDataWithCallback2(Microsoft.SharePoint.Library.IListItemSqlClient, System.String, System.String, System.String, System.String, Microsoft.SharePoint.Library.SAFEARRAYFLAGS, Microsoft.SharePoint.Library.ISP2DSafeArrayWriter, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Boolean ByRef)
(...) Microsoft.SharePoint.Library.SPRequest.GetListItemDataWithCallback2(Microsoft.SharePoint.Library.IListItemSqlClient, System.String, System.String, System.String, System.String, Microsoft.SharePoint.Library.SAFEARRAYFLAGS, Microsoft.SharePoint.Library.ISP2DSafeArrayWriter, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Boolean ByRef) 
(...) Microsoft.SharePoint.SPListItemCollection.EnsureListItemsData() 
(...) Microsoft.SharePoint.SPListItemCollection.GetDataTableCore(Microsoft.SharePoint.DataTableFetchOptions) 
(...) Contoso.WebParts.Weather.CreateChildControls()
(...) System.Web.UI.Control.EnsureChildControls() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Page.ProcessRequestMain(Boolean, Boolean) 
(...) System.Web.UI.Page.ProcessRequest(Boolean, Boolean) 
(...) System.Web.UI.Page.ProcessRequest() 
(...) System.Web.UI.Page.ProcessRequest(System.Web.HttpContext) 
(...) Microsoft.SharePoint.Publishing.TemplateRedirectionPage.ProcessRequest(System.Web.HttpContext) 
(...) System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
(...) System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef) 
(...) System.Web.HttpApplication+PipelineStepManager.ResumeSteps(System.Exception) 
(...) System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, System.AsyncCallback) 
(...) System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext) 
(...) System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32) 
(...) System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32) 
(...) DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64, Int32)
(...) System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatus ByRef)
(...) System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatus ByRef)
(...) DomainBoundILStubClass.IL_STUB_PInvoke(IntPtr, System.Web.RequestNotificationStatus ByRef)
(...) System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32) 
(...) System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32) 
(...) DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64, Int32)
(...) [ContextTransitionFrame: 0000006d042fe618] 

 

Notice the custom control Contoso.WebParts.Weather is trying to access a list (which requires valid credentials). The custom control is easy to spot, it is the only one not from Microsoft. So you check the version using lmv m Contoso.

0:072> lmv m Contoso
start             end                 module name
0000006d`2ced0000 0000006d`2ceda000   Contoso   (no symbols)           
    Loaded symbol image file: Contoso.dll
    Image path: C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Contoso\v4.0_1.0.0.0__7fe4f23318698e3d\Contoso.dll
    Image name: Contoso.dll
    Timestamp:        Wed Aug  5 14:30:09 2011 (55C26441)
    File version:     1.0.0.0
    Product version:  1.0.0.0
    File flags:       0 (Mask 3F)
    File OS:          4 Unknown Win32
    CompanyName:      Contoso The MOSS 2007 King
    ProductName:      Contoso
    InternalName:     Contoso.dll
    OriginalFilename: Contoso.dll
    ProductVersion:   1.0.0.0
    FileVersion:      1.0.0.0
    FileDescription:  Contoso
    LegalCopyright:   Contoso The MOSS 2007 King © 2011

You notice it is an old DLL, thus most likely not claims enabled. Looking at the source code there is the misbehaving part:

   1: namespace Contoso.WebParts
   2: {
   3:  
   4:     public class Weather : WebPart
   5:     {
   6:         public override void CreateChildControls()
   7:         {
   8:             // The full code below should run in elevated privileges to impersonate the app pool account (SPSecurity.RunWithElevatedPrivileges)
   9:             SPWeb rootWeb = SPContext.Current.Site.RootWeb;
  10:             SPList sPList = rootWeb.Lists["WeatherConfig"];
  11:             SPListItemCollection items = sPList.GetItems(new SPQuery
  12:             {
  13:                 Query = "<Where><Eq><FieldRef Name='Title' /><Value Type='Text'>Weather</Value></Eq></Where>"
  14:             });
  15:             DataTable dataTable = items.GetDataTable(); // <-- Here is doing something that requires impersonating caller
  16:             (... removed for clarity ...)
  17:         }
  18:  
  19:     }
  20: }

 

Line 15 is requesting data from a list. To do this it is necessary to impersonate the caller. In attempt to do so, SharePoint will try to impersonate the caller. In some situations if the list requires NTLM/Kerberos authentication, SharePoint will leverage c2WTS to fetch a valid token. The correct way to do that is to run the code in elevated privileges using SPSecurity.RunWithElevatedPrivileges. The code should look like this:

   1: namespace Contoso.WebParts
   2: {
   3:  
   4:     public class Weather : WebPart
   5:     {
   6:         public override void CreateChildControls()
   7:         {
   8:             SPSecurity.RunWithElevatedPrivileges(delegate()
   9:             {
  10:                 SPWeb rootWeb = SPContext.Current.Site.RootWeb;
  11:                 SPList sPList = rootWeb.Lists["WeatherConfig"];
  12:                 SPListItemCollection items = sPList.GetItems(new SPQuery
  13:             (... removed for clarity ...)
  14:  
  15:             
  16:             });
  17:         }
  18:  
  19:     }
  20: }

 

Method 2 – Changing DebugDiag 2 rule to log the user credential and token when bz7l happens

 

Capturing data

The command !token requires the Windows Debugger extension exts.dll. If you do not have Windows Debugger installed, follow instructions here. You can install Debugger in any machine, it does not need to be in the SharePoint server. Copy file exts.dll from the winxp folder under the Windows Debugger installation folder. It is something that looks like: C:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\winxp\exts.dll. If you not sure you can always open WinDbg, open Task Manager, select process Windows GUI symbolic debugger, right-click and choose Open File Location. Copy exts.dll to your SharePoint machine that you have DebugDiag installed. Place in this folder on the server: C:\Program Files\DebugDiag\Exts. NOTE: Make sure you copy exts.dll from the 64-bits version of the Debugger. If you copy from the 32-bits version IT WILL not work.

Follow instructions here to log user and stack without generating a dump file. The tag of interest is bz7l. Follow instructions in the previous post (click here) and make the following changes:

Step 10:

Use this code instead:

Dim Tag1
Dim TargetTag1
TargetTag1 = "bz7l"
Dim PartialText1
PartialText1 = "" 
Tag1 = Debugger.Execute("r @$t1=@ecx;.if (@$t1 >> 18 < 24) { r @$t2=@$t1>>18 & 3f; r @$t3=@$t1>>12 & 3f; r@$t4=@$t1>>0c & 3f; r @$t5=@$t1>>6 & 3f;r @$t6=@$t1 & 3f;.printf ""%C%C%C%C%C"",@@c++(@$t2 > 0x19 ? @$t2 + 0x16 : @$t2+'a'),@@c++(@$t3 > 0x19 ? @$t3 + 0x16 : @$t3+'a'),@@c++(@$t4 > 0x19 ? @$t4 + 0x16 : @$t4+'a'),@@c++(@$t5 > 0x19 ? @$t5 + 0x16 : @$t5+'a'),@@c++(@$t6 > 0x19 ? @$t6 + 0x16 : @$t6+'a');} .else { .printf ""%C%C%C%C"", @$t1>>18,@$t1>>10,@$t1>>8,@$t1; };") 
' Test if the tag matches
If InStr(Tag1,TargetTag1)>0 Then
'Only fetch message if necessary
Dim Message1
Message1 = ""
If PartialText1 <> "" Then
  Message1 = Debugger.Execute(".printf ""%mu"",@r9")
  'WriteToLog "Message: " & Message1 'Uncomment this line if you wish to log the message
End If
If Message1 = "" Or InStr(Message1,PartialText1) > 0 Then
  WriteToLog "Tag: " & Tag1 
  WriteToLog Debugger.Execute(".load exts\exts;!token –n;!clrstack")
End If
End If 


Step 17:

Use this code instead:

Dim Tag2
Dim TargetTag2
TargetTag2 = "bz7l"
Dim PartialText2
PartialText2 = ""
Tag2 = Debugger.Execute("r @$t1=@ecx;.if (@$t1 >> 18 < 24) { r @$t2=@$t1>>18 & 3f; r @$t3=@$t1>>12 & 3f; r@$t4=@$t1>>0c & 3f; r @$t5=@$t1>>6 & 3f;r @$t6=@$t1 & 3f;.printf ""%C%C%C%C%C"",@@c++(@$t2 > 0x19 ? @$t2 + 0x16 : @$t2+'a'),@@c++(@$t3 > 0x19 ? @$t3 + 0x16 : @$t3+'a'),@@c++(@$t4 > 0x19 ? @$t4 + 0x16 : @$t4+'a'),@@c++(@$t5 > 0x19 ? @$t5 + 0x16 : @$t5+'a'),@@c++(@$t6 > 0x19 ? @$t6 + 0x16 : @$t6+'a');} .else { .printf ""%C%C%C%C"", @$t1>>18,@$t1>>10,@$t1>>8,@$t1; };")
' Test if the tag matches
If InStr(Tag2,TargetTag2)>0 Then
'Only fetch message if necessary
Dim Message2 
Message2 = ""
If PartialText2 <> "" Then
   Message2 = Debugger.Execute(".printf ""%mu"",@r9")
   'WriteToLog "Message: " & Message2 'Uncomment this line if you wish to log the message
End If
If Message2 = "" Or  InStr(Message2,PartialText2) > 0 Then
  WriteToLog "Tag: " & Tag2 
  WriteToLog Debugger.Execute(".load exts\exts;!token –n;!clrstack")
 
End If
End If


After the problem is reproduced you can open the log file and check the output. It will look like this (excerpt):

Breakpoint id 1 at onetnative!ULSSendFormattedTrace caused by System ID: 17812
Tag: bz7l
 
TS Session ID: 0
User: S-1-5-17
Failed to query groups info size
Primary Group: S-1-5-17
Privs: 
 00 0x000000017 SeChangeNotifyPrivilege           Attributes - Enabled Default 
 01 0x00000001d SeImpersonatePrivilege            Attributes - Enabled Default 
 02 0x00000001e SeCreateGlobalPrivilege           Attributes - Enabled Default 
 03 0x000000021 SeIncreaseWorkingSetPrivilege     Attributes - 
Auth ID: 0:3e3
Impersonation Level: Impersonation
TokenType: Impersonation
Is restricted token: no.
 
OS Thread Id: 0x3e80 (72)
(...) Call Site
(...) Microsoft.SharePoint.Diagnostics.ULS+NativeMethods.ULSSendFormattedTrace(UInt32, UInt32, Microsoft.SharePoint.Diagnostics.ULSTraceLevel, System.String, Boolean)
(...) Microsoft.SharePoint.Diagnostics.ULS+NativeMethods.ULSSendFormattedTrace(UInt32, UInt32, Microsoft.SharePoint.Diagnostics.ULSTraceLevel, System.String, Boolean)
(...) DomainBoundILStubClass.IL_STUB_PInvoke(UInt32, UInt32, Microsoft.SharePoint.Diagnostics.ULSTraceLevel, System.String, Boolean)
(...) Microsoft.SharePoint.Diagnostics.ULS.SendTraceImpl(UInt32, Microsoft.SharePoint.Diagnostics.ULSCatBase, Microsoft.SharePoint.Diagnostics.ULSTraceLevel, System.String, System.Object[]) 
(...) Microsoft.SharePoint.Diagnostics.ULS.SendTraceTag(UInt32, Microsoft.SharePoint.Diagnostics.ULSCatBase, Microsoft.SharePoint.Diagnostics.ULSTraceLevel, System.String, System.Object[]) 
(...) Microsoft.SharePoint.SPSecurityContext.GetWindowsIdentity() 
(...) Microsoft.IdentityModel.WindowsTokenService.S4UClient+IS4UService_dup.UpnLogon(System.String, Int32)
(...) Microsoft.IdentityModel.WindowsTokenService.S4UClient.CallService(System.Func`2) 
(...) Microsoft.SharePoint.SPSecurityContext.GetWindowsIdentity() 
(...) Microsoft.SharePoint.Administration.SPFarm.CurrentClaimsUserIsBoxAdministrator(Microsoft.IdentityModel.Claims.IClaimsIdentity) 
(...) Microsoft.SharePoint.Administration.SPFarm.CurrentUserIsBoxAdministrator() 
(...) Microsoft.SharePoint.SPManagedCodeInterop.CanCurrentUserIgnoreThrottle(System.Guid) 
(...) Microsoft.SharePoint.Library.SPRequestInternalClass.GetListItemDataWithCallback2(Microsoft.SharePoint.Library.IListItemSqlClient, System.String, System.String, System.String, System.String, Microsoft.SharePoint.Library.SAFEARRAYFLAGS, Microsoft.SharePoint.Library.ISP2DSafeArrayWriter, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Boolean ByRef)
(...) Microsoft.SharePoint.Library.SPRequestInternalClass.GetListItemDataWithCallback2(Microsoft.SharePoint.Library.IListItemSqlClient, System.String, System.String, System.String, System.String, Microsoft.SharePoint.Library.SAFEARRAYFLAGS, Microsoft.SharePoint.Library.ISP2DSafeArrayWriter, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Boolean ByRef)
(...) Microsoft.SharePoint.Library.SPRequest.GetListItemDataWithCallback2(Microsoft.SharePoint.Library.IListItemSqlClient, System.String, System.String, System.String, System.String, Microsoft.SharePoint.Library.SAFEARRAYFLAGS, Microsoft.SharePoint.Library.ISP2DSafeArrayWriter, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Microsoft.SharePoint.Library.ISPDataCallback, Boolean ByRef) 
(...) Microsoft.SharePoint.SPListItemCollection.EnsureListItemsData() 
(...) Microsoft.SharePoint.SPListItemCollection.GetDataTableCore(Microsoft.SharePoint.DataTableFetchOptions) 
(...) Contoso.WebParts.Weather.CreateChildControls()
(...) System.Web.UI.Control.EnsureChildControls() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Control.PreRenderRecursiveInternal() 
(...) System.Web.UI.Page.ProcessRequestMain(Boolean, Boolean) 
(...) System.Web.UI.Page.ProcessRequest(Boolean, Boolean) 
(...) System.Web.UI.Page.ProcessRequest() 
(...) System.Web.UI.Page.ProcessRequest(System.Web.HttpContext) 
(...) Microsoft.SharePoint.Publishing.TemplateRedirectionPage.ProcessRequest(System.Web.HttpContext) 
(...) System.Web.HttpApplication+CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
(...) System.Web.HttpApplication.ExecuteStep(IExecutionStep, Boolean ByRef) 
(...) System.Web.HttpApplication+PipelineStepManager.ResumeSteps(System.Exception) 
(...) System.Web.HttpApplication.BeginProcessRequestNotification(System.Web.HttpContext, System.AsyncCallback) 
(...) System.Web.HttpRuntime.ProcessRequestNotificationPrivate(System.Web.Hosting.IIS7WorkerRequest, System.Web.HttpContext) 
(...) System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32) 
(...) System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32) 
(...) DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64, Int32)
(...) System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatus ByRef)
(...) System.Web.Hosting.UnsafeIISMethods.MgdIndicateCompletion(IntPtr, System.Web.RequestNotificationStatus ByRef)
(...) DomainBoundILStubClass.IL_STUB_PInvoke(IntPtr, System.Web.RequestNotificationStatus ByRef)
(...) System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr, IntPtr, IntPtr, Int32) 
(...) System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr, IntPtr, IntPtr, Int32) 
(...) DomainBoundILStubClass.IL_STUB_ReversePInvoke(Int64, Int64, Int64, Int32)
(...) [ContextTransitionFrame: 0000006d042fe618] 

Comments (0)

Skip to main content