Tuesday, November 10, 2015

Excel 2013 documents opening slow in SharePoint 2013

Using Office 2013 (15.0.4701.1001), often excel documents would hang for 20-30 seconds. Microsoft suggested the following key be added to the end user registry:
  1. Open regedit.exe
    Navigate to following key:
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\15.0\Common\Internet]
  1. Click Edit Menu -> New -> DWORD with name of "FSSHTTPOff" (without quotes)
  2. Click on "FSSHTTPOff" and enter value of 1
  3. Close any Office Applications and browser sessions
Please use at your own risk.

Wednesday, May 20, 2015

SharePoint 2013 List throws the "Value does not fall within the expected range." error when trying to submit a new item.

Recently, we had an issue with one of our custom lists. This list had a form customized with InfoPath 2013. Out of nowhere, one day we could not submit any new items and would get the following error message.


"Value does not fall within the expected range."
After checking ULS logs, we found the following:



System.ArgumentException: Value does not fall within the expected range., StackTrace:
at Microsoft.SharePoint.SPListItem.AddOrUpdateItem(Boolean bAdd, Boolean bSystem, Boolean bPreserveItemVersion, Boolean bNoVersion, Boolean bMigration, Boolean bPublish, Boolean bCheckOut, Boolean bCheckin, Guid newGuidOnAdd, Int32& ulID, Object& objAttachmentNames, Object& objAttachmentContents, Boolean suppressAfterEvents, String filename, Boolean bPreserveItemUIVersion)
at Microsoft.SharePoint.SPListItem.UpdateInternal(Boolean bSystem, Boolean bPreserveItemVersion, Guid newGuidOnAdd, Boolean bMigration, Boolean bPublish, Boolean bNoVersion, Boolean bCheckOut, Boolean bCheckin, Boolean suppressAfterEvents, String filename, Boolean bPreserveItemUIVersion)
at Microsoft.SharePoint.SPListItem.Update()
at Microsoft.SharePoint.SPListItem.ValidateUpdateListItem_Client(List`1 formValues, Boolean bNewDocumentUpdate)
at Microsoft.SharePoint.ServerStub.SPListItemServerStub.InvokeMethod(Object target, String methodName, XmlNodeList xmlargs, ProxyContext proxyContext, Boolean& isVoid)
at Microsoft.SharePoint.Client.ServerStub.InvokeMethodWithMonitoredScope(Object target, String methodName, XmlNodeList args, ProxyContext proxyContext, Boolean& isVoid)
at Microsoft.SharePoint.Client.ClientMethodsProcessor.InvokeMethod(Object obj, String methodName, XmlNodeList xmlargs, Boolean& isVoid)
at Microsoft.SharePoint.Client.ClientMethodsProcessor.ProcessMethod(XmlElement xe)
at Microsoft.SharePoint.Client.ClientMethodsProcessor.ProcessOne(XmlElement xe)
at Microsoft.SharePoint.Client.ClientMethodsProcessor.ProcessStatements(XmlNode xe)
at Microsoft.SharePoint.Client.ClientMethodsProcessor.ProcessExceptionHandlingScope(XmlElement xe)
at Microsoft.SharePoint.Client.ClientMethodsProcessor.ProcessOne(XmlElement xe)
at Microsoft.SharePoint.Client.ClientMethodsProcessor.ProcessStatements(XmlNode xe)
at Microsoft.SharePoint.Client.ClientMethodsProcessor.Process()
at Microsoft.SharePoint.Client.ClientRequestServiceImpl.ProcessQuery(Stream inputStream, IList`1 pendingDisposableContainer)
at Microsoft.SharePoint.Client.ClientRequestService.ProcessQuery(Stream inputStream)
at SyncInvokeProcessQuery(Object , Object[] , Object[] )
at System.ServiceModel.Dispatcher.SyncMethodInvoker.Invoke(Object instance, Object[] inputs, Object[]& outputs)
at System.ServiceModel.Dispatcher.DispatchOperationRuntime.InvokeBegin(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage5(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.ImmutableDispatchRuntime.ProcessMessage31(MessageRpc& rpc)
at System.ServiceModel.Dispatcher.MessageRpc.Process(Boolean isOperationContextSet)
at System.ServiceModel.Dispatcher.ChannelHandler.DispatchAndReleasePump(RequestContext request, Boolean cleanThread, OperationContext currentOperationContext)
at System.ServiceModel.Dispatcher.ChannelHandler.HandleRequest(RequestContext request, OperationContext currentOperationContext)
at System.ServiceModel.Dispatcher.ChannelHandler.AsyncMessagePump(IAsyncResult result)
at System.Runtime.Fx.AsyncThunk.UnhandledExceptionFrame(IAsyncResult result)
at System.Runtime.AsyncResult.Complete(Boolean completedSynchronously)
at System.Runtime.InputQueue`1.AsyncQueueReader.Set(Item item)
at System.Runtime.InputQueue`1.EnqueueAndDispatch(Item item, Boolean canDispatchOnThisThread)
at System.Runtime.InputQueue`1.EnqueueAndDispatch(T item, Action dequeuedCallback, Boolean canDispatchOnThisThread)
at System.ServiceModel.Channels.SingletonChannelAcceptor`3.Enqueue(QueueItemType item, Action dequeuedCallback, Boolean canDispatchOnThisThread)
at System.ServiceModel.Channels.HttpPipeline.EnqueueMessageAsyncResult.CompleteParseAndEnqueue(IAsyncResult result)
at System.ServiceModel.Channels.HttpPipeline.EnqueueMessageAsyncResult.HandleParseIncomingMessage(IAsyncResult result)
at System.Runtime.AsyncResult.SyncContinue(IAsyncResult result)
at System.ServiceModel.Channels.HttpPipeline.EmptyHttpPipeline.BeginProcessInboundRequest(ReplyChannelAcceptor replyChannelAcceptor, Action dequeuedCallback, AsyncCallback callback, Object state)
at System.ServiceModel.Channels.HttpChannelListener`1.HttpContextReceivedAsyncResult`1.ProcessHttpContextAsync()
at System.ServiceModel.Channels.HttpChannelListener`1.BeginHttpContextReceived(HttpRequestContext context, Action acceptorCallback, AsyncCallback callback, Object state)
at System.ServiceModel.Activation.HostedHttpTransportManager.HttpContextReceived(HostedHttpRequestAsyncResult result)
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.HandleRequest()
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.BeginRequest()
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest(Object state)
at System.ServiceModel.AspNetPartialTrustHelpers.PartialTrustInvoke(ContextCallback callback, Object state)
at System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequestWithFlow(Object state)
at System.Runtime.IOThreadScheduler.ScheduledOverlapped.IOCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* nativeOverlapped)
at System.Runtime.Fx.IOCompletionThunk.UnhandledExceptionFrame(UInt32 error, UInt32 bytesRead, NativeOverlapped* nativeOverlapped)
at System.Threading._IOCompletionCallback.PerformIOCompletionCallback(UInt32 errorCode, UInt32 numBytes, NativeOverlapped* pOVERLAP)


We figured it was a corrupted column but since this list has about 80 columns of different types we could not quite put a finger on which one was corrupted. After exhausting google search and million articles that led to mostly custom code, development, and people/groups column issues we submitted a ticket with Microsoft. However, Microsoft could not figure it out but agreed that its a corrupted column.

Our next step was to export the list and import it into another site and start deleting columns one by one until we find the one that is corrupted. After much trial and error we found that the issue was with a dropdown (choice column). If we deleted that particular choice column, we could submit new items with no problems.

So deleting this column in production list would be a big problem, hence deleting was not an option or at least not yet. Next, we realized that this column was indexed so we deleted its index and tried to submit new item...and it worked!!!

So it appears that its index was corrupted somehow, so simply deleting its index resolved the issue.





Tuesday, February 3, 2015

SharePoint 2013 Alerts not working...again

There is plenty of resources online about this issue and none suggest doing this first and they really should.

So if you had SharePoint 2013 alerts configured and working and is just stopped working one day with the following symptoms:

  • If you register for alerts in a particular list, you get a notification that "You have successfully created an alert for..."
  • If you modify any item in the same list as above, no alerts come thru.

You will need to make sure that each SharePoint server ip address (web front, application) in the farm is added as an allowed SMTP sender in Exchange.

Explanation: Any SharePoint server in the farm can be in charge of sending an alert and usually one is in charge of a particular site collection. If you restart Timer Service, it might move that responsibility to another SharePoint server whose IP is not listed as an allowed SMTP sender in Exchange, and as an end result, it might not send alerts.

Hoping this helps someone