Thursday, October 21, 2010

Troubleshooting "General Error" when using Drill-Down Builder - Part 2

This article is part 2 of 2.

In my previous article on the same subject, I told you about the adventures of my friend, MVP Mark Polino and his attempt to get a better description to the error "General Error" when running a Drill-Down Builder in Excel and Outlook. Once followed the instructions outlined in the previous post, Mark was able to obtain what seems to be a less cryptic error message, as follows:

A general error has occured.A call to SSPI failed, see inner exception.

Server stack trace: 
   at System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade(Stream stream, SecurityMessageProperty& remoteSecurity)
   at System.ServiceModel.Channels.StreamSecurityUpgradeInitiatorBase.InitiateUpgrade(Stream stream)
   at System.ServiceModel.Channels.ConnectionUpgradeHelper.InitiateUpgrade(StreamUpgradeInitiator upgradeInitiator, IConnection& connection, ClientFramingDecoder decoder, IDefaultCommunicationTimeouts defaultTimeouts, TimeoutHelper& timeoutHelper)
   at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.SendPreamble(IConnection connection, ArraySegment`1 preamble, TimeoutHelper& timeoutHelper)
   at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.DuplexConnectionPoolHelper.AcceptPooledConnection(IConnection connection, TimeoutHelper& timeoutHelper)
   at System.ServiceModel.Channels.ConnectionPoolHelper.EstablishConnection(TimeSpan timeout)
   at System.ServiceModel.Channels.ClientFramingDuplexSessionChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade)
   at System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
   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.Dynamics.GP.ServiceIntegration.ProtocolHandler.DynamicsGPDrillBackService.IDrillBackToGP.CallAction(Uri uri)
   at Microsoft.Dynamics.GP.ServiceIntegration.ProtocolHandler.ProcessDrillBack.ProcessStart(Uri uriParameter)
   at Microsoft.Dynamics.GP.ServiceIntegration.ProtocolHandler.Program.LaunchApplicationByUri(Uri uri)
   at Microsoft.Dynamics.GP.ServiceIntegration.ProtocolHandler.Program.Main(String[] args)

System.ServiceModel.Security.SecurityNegotiationException

With this Inner Exception   at System.Net.Security.NegoState.ProcessAuthentication(LazyAsyncResult lazyResult)
   at System.Net.Security.NegotiateStream.AuthenticateAsClient(NetworkCredential credential, ChannelBinding binding, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
   at System.Net.Security.NegotiateStream.AuthenticateAsClient(NetworkCredential credential, String targetName, ProtectionLevel requiredProtectionLevel, TokenImpersonationLevel allowedImpersonationLevel)
   at System.ServiceModel.Channels.WindowsStreamSecurityUpgradeProvider.WindowsStreamSecurityUpgradeInitiator.OnInitiateUpgrade(Stream stream, SecurityMessageProperty& remoteSecurity)

System.Security.Authentication.AuthenticationException

Less cryptic? Perhaps, but nonetheless an error that pointed to a security authentication issue. Since the problem was authentication-related, it turned out that Mark was not connected to the domain. That's it! There you have it! In order to be able to use the Drill-Down Builder with files that are going to reside on some network share or location, you must be authenticated into the domain. May sound like a no brainer, but try saying that when the only thing you have to go by is a "General Error" message. After establishing a VPN connection to the domain, everything returned to normal.

Note that even if you are joined into the domain, you may indeed receive this error if you have lost security access to the network share holding the connection information files.

Until next post!

MG.-
Mariano Gomez, MVP
Maximum Global Business, LLC
http://www.maximumglobalbusiness.com/

No comments: