Archive for 14. January 2010

Server Error - Cannot complete this action.

So I’ve been experiencing a strange problem with my Sharepoint installation.  User authentication fails on the site when running any version of Internet Explorer but works fine in Firefox, Safari, Chrome, etc.  Isn’t it ironic?  Don’t you think?  Well, I’ve been messing around with lots of different settings and I’m getting closer to the solution, which I believe has to do with Kerberos authentication failing on the server, and so reverting to NTLM auth, which apparently is no good.

Back to the point of the post: while messing around with my IIS settings, I changed something which gave me a strange error.  I wasn’t sure what I did yet, but the ASP error page came up (you have to configure Sharepoint to show detailed error messages instead of the friendly error page), with the message simply being “Cannot complete this action.  Please try again.”  The stack trace is below:

Stack Trace:

[COMException (0x80004005): Cannot complete this action.  Please try again.]    Microsoft.SharePoint.Library.SPRequestInternalClass.GetFileAndMetaInfo(String bstrUrl, Byte bPageView, Byte bPageMode, Byte bGetBuildDependencySet, String bstrCurrentFolderUrl, Boolean& pbCanCustomizePages, Boolean& pbCanPersonalizeWebParts, Boolean& pbCanAddDeleteWebParts, Boolean& pbGhostedDocument, Boolean& pbDefaultToPersonal, String& pbstrSiteRoot, Guid& pgSiteId, UInt32& pdwVersion, String& pbstrTimeLastModified, String& pbstrContent, Byte& pVerGhostedSetupPath, UInt32& pdwPartCount, Object& pvarMetaData, Object& pvarMultipleMeetingDoclibRootFolders, String& pbstrRedirectUrl, Boolean& pbObjectIsList, Guid& pgListId, UInt32& pdwItemId, Int64& pllListFlags, Boolean& pbAccessDenied, Guid& pgDocId, Byte& piLevel, UInt64& ppermMask, Object& pvarBuildDependencySet, UInt32& pdwNumBuildDependencies, Object& pvarBuildDependencies, String& pbstrFolderUrl, String& pbstrContentTypeOrder) +0    Microsoft.SharePoint.Library.SPRequest.GetFileAndMetaInfo(String bstrUrl, Byte bPageView, Byte bPageMode, Byte bGetBuildDependencySet, String bstrCurrentFolderUrl, Boolean& pbCanCustomizePages, Boolean& pbCanPersonalizeWebParts, Boolean& pbCanAddDeleteWebParts, Boolean& pbGhostedDocument, Boolean& pbDefaultToPersonal, String& pbstrSiteRoot, Guid& pgSiteId, UInt32& pdwVersion, String& pbstrTimeLastModified, String& pbstrContent, Byte& pVerGhostedSetupPath, UInt32& pdwPartCount, Object& pvarMetaData, Object& pvarMultipleMeetingDoclibRootFolders, String& pbstrRedirectUrl, Boolean& pbObjectIsList, Guid& pgListId, UInt32& pdwItemId, Int64& pllListFlags, Boolean& pbAccessDenied, Guid& pgDocId, Byte& piLevel, UInt64& ppermMask, Object& pvarBuildDependencySet, UInt32& pdwNumBuildDependencies, Object& pvarBuildDependencies, String& pbstrFolderUrl, String& pbstrContentTypeOrder) +625  [SPException: Cannot complete this action.  Please try again.]    Microsoft.SharePoint.Library.SPRequest.GetFileAndMetaInfo(String bstrUrl, Byte bPageView, Byte bPageMode, Byte bGetBuildDependencySet, String bstrCurrentFolderUrl, Boolean& pbCanCustomizePages, Boolean& pbCanPersonalizeWebParts, Boolean& pbCanAddDeleteWebParts, Boolean& pbGhostedDocument, Boolean& pbDefaultToPersonal, String& pbstrSiteRoot, Guid& pgSiteId, UInt32& pdwVersion, String& pbstrTimeLastModified, String& pbstrContent, Byte& pVerGhostedSetupPath, UInt32& pdwPartCount, Object& pvarMetaData, Object& pvarMultipleMeetingDoclibRootFolders, String& pbstrRedirectUrl, Boolean& pbObjectIsList, Guid& pgListId, UInt32& pdwItemId, Int64& pllListFlags, Boolean& pbAccessDenied, Guid& pgDocId, Byte& piLevel, UInt64& ppermMask, Object& pvarBuildDependencySet, UInt32& pdwNumBuildDependencies, Object& pvarBuildDependencies, String& pbstrFolderUrl, String& pbstrContentTypeOrder) +748    Microsoft.SharePoint.SPWeb.GetWebPartPageContent(Uri pageUrl, PageView requestedView, HttpContext context, Boolean forRender, Boolean includeHidden, Boolean mainFileRequest, Boolean fetchDependencyInformation, Boolean& ghostedPage, Byte& verGhostedPage, String& siteRoot, Guid& siteId, Int64& bytes, Guid& docId, UInt32& docVersion, String& timeLastModified, Byte& level, Object& buildDependencySetData, UInt32& dependencyCount, Object& buildDependencies, SPWebPartCollectionInitialState& initialState, Object& oMultipleMeetingDoclibRootFolders, String& redirectUrl, Boolean& ObjectIsList, Guid& listId) +2578    Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.FetchWebPartPageInformationForInit(HttpContext context, SPWeb spweb, Boolean mainFileRequest, String path, Boolean impersonate, Boolean& fGhostedPage, Byte& verGhostedPage, Guid& docId, UInt32& docVersion, String& timeLastModified, SPFileLevel& spLevel, String& masterPageUrl, String& customMasterPageUrl, String& webUrl, String& siteUrl, Guid& siteId, Object& buildDependencySetData, SPWebPartCollectionInitialState& initialState, String& siteRoot, String& redirectUrl, Object& oMultipleMeetingDoclibRootFolders, Boolean& objectIsList, Guid& listId, Int64& bytes) +2081    Microsoft.SharePoint.ApplicationRuntime.SPRequestModuleData.GetFileForRequest(HttpContext context, SPWeb web, Boolean exclusion, String virtualPath) +727    Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.InitContextWeb(HttpContext context, SPWeb web) +164    Microsoft.SharePoint.WebControls.SPControl.SPWebEnsureSPControl(HttpContext context) +665    Microsoft.SharePoint.WebControls.SPControl.GetContextWeb(HttpContext context) +41    Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.PostResolveRequestCacheHandler(Object oSender, EventArgs ea) +595    System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +80    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171

The solution?  Turn on ASP.NET impersonation.  Not sure exactly yet why, but I will post when I find out.  To turn it on, open up IIS 7, click on the site’s name in the tree view, then click on the Authentication button.  Click on ASP.NET  Impersonation.  On the right sidebar, click on Enable.  Now restart IIS (click on the server name in tree view, then on the right sidebar, restart).  This did the trick for me.

Welcome to the Sharepoint Project

[Listening to Nas: Stillmatic] Okay, so my company is getting ready to come up, enterprise style, and how do we do this?  Set up a Sharepoint site.  Cool.  Now I’ve been assigned to this project.  Let me back it up.  The company currently has about 3,000 employees who all use a PHP-based intranet for work applications and document management.  The intranet sits on a LAMP stack (which we recently migrated over from Mac servers) and was created when the company was just a start-up, and development standards and architecture were not of any concern.  The current phase of the Sharepoint project involves three major components:

  • creating a document management system
  • migrating existing documents on the Intranet and file servers over
  • integrating our existing Intranet applications on the Sharepoint site

Until the project started a couple months ago, I had absolutely no experience with Sharepoint at all.  In fact, I didn’t even know what the hell it was.  But that all had to change really quickly.  Unfortunately, my company cut the budget for training so we (myself and another developer) were pretty much instructed to just find some online tutorials and figure it out by ourselves.  That is the whole reason for this section of the blog: to document all the stuff that I break and how to fix it ;)  And also to share all the good knowledge that I learn along the way.

Just FYI, there is already a LOT of really good blogs out there about Sharepoint, and I’m going to try to minimize duplication as much as possible, so don’t expect to find every answer you want here.  I am most definitely not the expert, but I will post the links to their sites whenever I find out some good tidbits.  I’m just merely documenting my aches and pains of learning Sharepoint from the ground up.

Word of warning: don’t expect to find any sort of logical order in my posts either.  I’m really just attacking this thing from all angles and sharing what I learn along the way.

Aloha.

[Listening to Muse]  Okay, well, I’ve been fighting it for a long time because I’ve never felt that I had that much interesting stuff to say to the world, but here it finally is.  My first blog.  (Clap, clap, clap).  Thank you, you’re too kind.  Why?  Well, I just realized that so much crazy shit goes on in my life all the time, and I kill so many brain cells that I probably won’t be able to remember it all when I get old and need some way to be able to recall the stories that I pass on to my grandchildren.  Hopefully these interwebs (and the human race) will still be around when that time comes.  Actually, the thing that really pushed me over the edge was that I’m currently nuggets deep in creating and configuring a new Sharepoint installation for my company and am doing it with no prior knowledge, no training, and no real starting point, so a whole category of this blog will be dedicated to the aches and pains (do you get it now?) of figuring it out as I go along.  So, this is my first post, on my first blog.  If you enjoy it, cool.  If not, send a random person an email and tell them so.Hanohano Novice '09

|