Take the 2-minute tour ×
SharePoint Stack Exchange is a question and answer site for SharePoint enthusiasts. It's 100% free, no registration required.

I've zonked my v4.master page by putting a bad link in a ScriptLink tag. All my pages, including the Settings pages, produce only "Cannot make a cache safe URL for..." error messages. I can fix the error, I just can't get to anywhere that will let me reset the file.

I have no access to the server, no permissions to the parent site, and can't overwrite v4.master via WebDAV because it is "ghosted"(?) (see http://social.msdn.microsoft.com/Forums/hi-IN/sharepointgeneralprevious/thread/c5952364-c375-48c4-82bd-394d3b7e3c46) SharePoint designer is disallowed on the server (and I only have SPD2007 anyway)

Anybody got any bright ideas or tricks on how to reset or overwrite the v4.master file to fix my mistake? (besides getting a sysadmin to do it, which will take forever around here)

Edit: AAAH I am so close. I can get the list of master pages to come up again by uploading my repaired .master, then changing (via WebDAV)
/sites/sitename/_catalogs/masterpage/Forms/AllItems.aspx and EditForm.aspx to point to that repaired master page (by changing MasterPageUrl in the files), but when I try to upload a new file or access the version history to rollback, I keep getting bounced to /sites/sitename/_layouts/Upload.aspx or Versions.aspx, which I don't think I have access to change. I see a /sites/sitename/_catalogs/masterpage/Forms/Upload.aspx, but apparently that is not used from the master pages interface, which is mind-meltingly frustrating.

share|improve this question
    
How did you put it there to begin with? SharePoint Designer or? –  Daniel Ziga Dec 18 '12 at 13:15
    
I got it there by using the regular Upload function in the Master pages interaface, which is now broken –  Andy Dec 18 '12 at 14:05
    
How about write a .Net client to use /sitename/_vti_bin/versions.asmx's RestoreVersion? Anybody think of that? It didn't work because the service is locked down to only local requests, but that was the kind of answer that I was looking for. This is getting me nowhere. –  Andy Dec 19 '12 at 12:58
    
Do you know the version # of the most recent broken version? Maybe you could call DeleteVersion –  Kit Menke Dec 19 '12 at 14:51
    
If I can't call RestoreVersion, I can't call DeleteVersion. It's an 401 authentication error when calling the service. –  Andy Dec 19 '12 at 14:53
show 3 more comments

4 Answers 4

Since your master page is now unghosted (= customized = not anymore retrieved from the file system), you'll have a newer version. You can roll back to a previous edition (v1.0 as provisionned by MS) to put you back in a working state.

Go to {Your-Site-Collection-Url}/_catalogs/masterpage/Forms/AllItems.aspx, select the v4.master, history and roll back to a previous version

V4-History

Otherwise, you could replace the current master page to something else (night & day or minimal ?) by going straight to the relevant page through {Your-Site-Collection-Url}/_Layouts/ChangeSiteMasterPage.aspx

share|improve this answer
    
Yeah the problem is that when I visit /_catalogs/masterpage/Forms/AllItems.aspx, I get the error message because (I guess) even the site settings pages use the v4.master page for their layout. –  Andy Dec 18 '12 at 14:08
    
When I tried /_Layouts/ChangeSiteMasterPage.aspx, I get a generic error message - I don't see that page anywhere when navigating via WebDAV, so maybe I got the URL wrong, but I can't guess what it should be. –  Andy Dec 18 '12 at 14:11
    
You won't see it through WebDav as it's an application page, loaded from the 14 hive. Did you try connecting with someone else ? The master page library has versioning on it by default meaning that you'll need to publish your master page for it to be available to everyone. Might be a good idea to connect as someone else with less privileges to ensure your version is pending approval –  Francois Verbeeck Dec 18 '12 at 14:22
    
I didn't have to publish anything before for my changes to take effect. In any case, I'm not sure how this helps - the URL you mentioned returns a generic "An unexpected error has occurred" message. –  Andy Dec 18 '12 at 15:14
    
Apparently, I don't have 'SharePoint Server Publishing Infrastructure' turned on: youdhbir.blogspot.com/2012/04/… –  Andy Dec 18 '12 at 17:35
show 2 more comments

Since you cannot access the site's normal, web-based UI: Use SharePoint Designer 2010 and in the Site Objects navigation menu on the left, select Master Pages. Right click your v4.master and either reset to a specific version or edit it to make the required changes.

Something is going to have to give. There is no magic spell that can fix the issue. You will either need physical access to the server to run a script, or use Designer.

enter image description here

share|improve this answer
    
AAAAAAH "SharePoint designer is disallowed on the server (and I only have SPD2007 anyway)"! –  Andy Dec 18 '12 at 19:41
1  
You can download 2010 for free. Like I said in my answer, something has to give. You either need to roll back the version via the web UI (which you physically cannot do because of the error), access the server and install a solution to change the master page to a new one (then roll back the broken on), use Designer, or write something in C#/VB.net using the Managed Client Object Model. –  Robert Kaucher Dec 19 '12 at 2:36
    
And that's if you even can change the master page using the client object model... –  Robert Kaucher Dec 19 '12 at 2:41
    
Saying "get SP 2010 Designer" when I can't doesn't really help. –  Andy Dec 19 '12 at 12:04
    
If you've hosed the web UI and can't do anything there, your ONLY option will be PowerShell, managed code, or SharePoint Designer. –  webdes03 Dec 19 '12 at 13:08
show 5 more comments

I believe the main issue you are experiencing is actually the ScriptLink which is not able to located the script int the _layouts path you mentioned. In order to fix that make sure you copy the actual .js file as specified in your ScriptLink to the appropiate Folder, using as basis _layouts, so that if you mentioned /scripts/myscript.js is actually pointing to the a location in your 14-hive under TEMPLATES/LAYOUTS/SCRIPTS (this assumes you have not specified EnableScriptGlobalization which actually is trying by default to find a folder for the En-US which is using 1033 as the basis)!

If you still want to recover it (depending on what you try to achieve) - every single site collection has a copy of the v4.master -just copy/paste the content.

share|improve this answer
    
Again, no server access to copy files onto the file system –  Andy Dec 18 '12 at 14:09
    
Very well, then you should NOT use ScriptLink in that case, but rather, either the clasical script tags or even more, you could use a custom action with the ScriptSrc attribute which loads then the script –  C. Marius - MVP Dec 18 '12 at 18:03
    
yes of course I should. I have the v4.master ready with the classic script tags. The question is how do I edit/overwrite the v4.master file given my situation? –  Andy Dec 18 '12 at 19:16
1  
Open the site with SharePoint Designer 2010 (the site collection where you changed the master page), chose another one, and use the ribbon buttons to set it. –  C. Marius - MVP Dec 20 '12 at 21:58
add comment

I recently had this same issue and the same restrictions and addressed it using a web folder. A co-worker found that you can create a web folder mapped to "{site}/_catalogs/masterpage/". You then gain direct access via Windows Explorer and can download/upload the new master page.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.