This post is part of the Site directory troubleshooting series, you can access the other posts here.
So the focus is on the rendering and submit action of this form on the /_layouts/csignup.aspx page or /admin/createsite.aspx.
The major difference in the form rendering is the fact that the master site directory form is prepared to have the site directory even in another other SharePoint farm therefore local object model calls cannot be used to verify the web, list, view existence. Web service calls are used with the identity of the application pool account. In case of the /admin/createsite.aspx by default it will be the system account. On the /_layouts/csignup.aspx page it will be the configured application pool identity. Single machine installs having network service as the default application pool account might run into permissions problems accessing master site directory on another farm due to machine accounts being used for the web service calls.
However you cannot set remote farm to be the default master site directory in central administration. You can enter a remote farm absolute url and click ok and receive no errors, but this won’t be persisted and next time you open the setting it will be unchanged. This is a side effect how SharePoint stored master site directory in the PortalService. The site id and web id stored instead of the url, and the siteid and webid looked up from the url in the local farm therefore saving a remote farm url cannot succeed. On the other hand the form rendering is fully capable of handling remote farm urls if the remote master site directory url is passed as query string parameter.
This is the pre-requisite check process for the form rendering:
Note: there is a typo in the ULS log entry itself, I pasted as you will see it in the log.
On submit event depending on the entry requirements server side validation runs to check all field values or to ensure that at least one is filled out. Before the save operation all control rendering happens in the same sequence from step 5 to create the update XML with the correct field names and values which will be used in the /_vti_bin/lists.asmx webservice in the UpdateListItems operation (again the application pool’s identity is used as in all site directory initiated webservice calls).
If there is a problem during the update XML creation , save operation can fail with "Update xml is unexpectedly empty. No update performed." if the Site Directory category trace level is at least on Unexpected or above.
When the new list item is added in the site directory list in the site directory subweb using the webservice te following is logged in ULS if the Site Directory category trace level is at least on Medium or above (the placeholder between $ signs will be populated with real values) :
“Adding site directory item with title of "$new site collection’s title$" completed”
If there is an error during save the following line is logged into ULS if the Site Directory trace level is High or above "CreateSiteCollectionPanel1: An exception occured in OnFormSave(). Exception: "
If the form is not displayed on the site collection creation page
Form submit fails and site collection is not added to the list.
Form submit succeeds and site collection is not added to the list.
0x80070005 is access denied. You might have other error code listed. Try to open the site directory list and add an item manually using the app pool identity user to verify if you receive an error as well. Try to resolve the error received.
Another similar error can happen when custom columns used in the Sites list were created by a feature and that feature is removed or gets corrupted on a frontend machine. The error returned in ULS looks like this with clear steps to follow: Adding site directory item with title of "test2" completed: <Results xmlns="http://schemas.microsoft.com/sharepoint/soap/"><Result ID="1,New"><ErrorCode>0x81020014</ErrorCode><ErrorText>One or more field types are not installed properly. Go to the list settings page to delete these fields.</ErrorText></Result></Results>
Back to the table of contents