Issues upgrading to Umbraco 7.2 (and how to resolve them)

Here are the stumbling blocks I found in my upgrade from Umbraco 7.1.2 to Umbraco 7.2.

  1. Can’t get to verify upgrade page (spins forever)
  2. DependencyHandler.axd not found (404)
  3. Content nodes in list view don’t appear in search

How I upgraded

I have a Visual Studio 2013 project with the UmbracoCms package installed via nuget. I’ve done extensive customization of the web.config (mostly url rewriting but some other things too) but most other things are out of the box. So after checking in my existing code base, I felt pretty confident in following the general upgrade guides instructions to open the Package Console and type Update-Package UmbracoCms.

Now the general upgrade guide directs people upgrading to 7.2.0 to skip all of the information about how to respond to the overwrite prompts. So I chose not let nuget overwrite my files since that is the default action.

Unfortunately the guide also directs us to skip the section that talks about merging configuration files which is how I ran into my first problem.

Can’t get to the “verify upgrade” page (spins forever)

Solution: Merge your config files (mainly web.config)

Since I didn’t  have any language or ui.xml files to merge, I went straight to the finalize section of the guide and opened my site. I got to a page with the Umbraco logo and the gray background and then just sat there. Things were spinning but nothing was happening.

The way to make it stop is to go back and merge your config files. This may seem pretty obvious to you smart people out there but the guide did specifically say I should skip that section if upgrading to 7.2.0 (as of this writing).

DependencyHandler.axd not found (404)

Solution: Make sure you’re not rewriting it!

Now I was at the verify upgrade page. I clicked the button and read the facts. (do you think the two people with cats named Umbraco are the same two that have the Umbraco tattoo?). The installation finished and then it tried to redirect me to the backoffice… where it spun.

Luckily I’ve run into this problem before. I used Fiddler (a tool for watching http requests among other things) to see what was really happening. Sure enough /DependencyHandler.axd was returning a 404. I added that to my rule for excluding rewriting and things started working again. In case you’re wondering, here is what that rule looks like.

<!-- [ 1.] Filter out things that shouldn't be rewritten -->
<!-- Whitelist: Stop rewrite processing immediately for locations that don't need it -->
<rule name="StopRewriting" stopProcessing="true">
<match url="^(css|scripts|umbraco|umbraco_client|install|media|webresource.axd|scriptresource.axd|dependencyhandler.axd)" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="None" />
</rule>

Content nodes in list view don’t appear in search

Solution: Rebuild and optimize your Internal Index

When I finally got into the mecca that is Umbraco 7.2 I was instantly disappointed that my most anticipated feature (the ability to link to/select things from list view) wasn’t working. No matter what list view item I searched for, it wouldn’t show results. Searching from directly within the list view worked as normal but those pages weren’t appearing in either the main backoffice search or the specific one that appears when you try to link to a list view page.

Luckily rebuilding and optimizing my index gets this working in a flash. I can only presume that either these nodes never showed up in main search before (and I never noticed) or there was some change to the way they are represented that requires the re-indexing.

Wrapup

Even with those three issues, this was still one of the smoothest upgrades I’ve encountered with Umbraco and nuget. I’ll continue testing the upgrade locally for a few days before deploying it to production.

Edited Note: When publishing an upgraded Umbraco to production (at least with this version) you need to update your web.config to reflect the original version number. This will allow the install (complete with any database changes) to run on the remote server. Just change your version number back to 7.2.0 when finished with the publish.

How to fix the “could not load file or assembly for [some package you already uninstalled]” Message

Problem

You’re getting a “could not load file or assembly” error message for some Umbraco package that you’ve already installed. You’ve searched for and deleted every reference to said package from code and removed the dlls from bin.

It continues to happen, making you want to stab things.

Solution…?

Touch your global.asax file. No seriously. Apparently that clears the plugincache. Or something. Sigh.

Back Story and Source

Once upon a time, I installed the CMSImport plugin on Umbraco 7.0.1. I needed to import some news articles and it looked like the tool for the job.

It was great! I imported all the things and it worked and birds sang and people were all happy and stuff. But then it was over, I was finished with CMSImport and did not want to import things anymore. So I uninstalled it. Because that’s what you do in these situations.

This seemed to make my installation very unhappy. I guess it missed CMSImport. It started throwing weird errors when I did things like delete a media file. The ghost of CMSImport was haunting me without leaving a trace in the.. trace… log. Anyway. To cut straight to the point, when my weeks of randomly deleting files and sporadic Googleing failed as if no one in the face of the internet has ever had this problem before,  I bit the bullet and upgraded to 7.0.4.

I won’t get into how I had to try that 3 times and then ended up not even running the installer. (grrr). Lets just say that when I loaded my fresh installation and  deleted a file, I got the same error.

<sarcasm>For yays!</sarcasm>

Then I stumbled across this throwaway comment on a completely different issue (emphasis mine).

…could you try touching the global.asax file (just put a space in it and save it) to see if that helps? Sounds like the plugincache is in an invalid state and this helps clear it.

Sebastiaan Janssen

So I did that and it worked. I hope it works for you.

 

Captioning Flash Files for DVD

A couple years ago I was asked to take some video clips (flash files stripped from the internet with permission), add captions, and prepare them to be played on a kiosk (via dvd).

It took significant trial and error but I documented the final process as “not as painful as it could have been”. I haven’t had a project like that since so there may be better tools now but here is a basic overview what I did.

  1. Convert .flv files to .avi
  2. Upload videos to youtube
  3. Transcribe video
    • Transcripts need to include sound effects for proper captioning
    • This could be done as part of step 6
  4. Upload transcripts to YouTube to get a .sbv file with timing
    • Note: It doesn’t work as well with videos that are mostly sound effects so those videos will require way more adjusting in step 6.
  5. Convert the resulting .sbv to .srt using your tool of choice
  6. Use VisualSubSync to adjust the timing and fine tune the captions.
  7. Save the results back to an .srt file Test the captions (optional) by uploading the .srt file back to YouTube Stitch the .avi and the .srt file together using Auto Gordian Knot (http://www.autogk.me.uk/*) to create a “hard captioned” video Burn hard captioned videos to DVD

It’s possible that visualsubsync (which is exactly what I would expect a subtitle editor to be) will also auto synchronize captions. If so, you could eliminate the google/youtube steps.

Other Resources

Note: the link for Auto Gordian Knot is broken as of this posting. Not sure if it’s permanently down but there are places to download the software if you Google it.

An invalid schema or catalog was specified for the provider “MSDASQL” for linked server

Make sure “level zero only” is checked on the MSDASQL provider.

Now to the question!

SQL Server’s linked server feature lets you link to a remote server through an ODBC connection. Once the server is linked, you are supposed to be able to reference it using four-part notation like so:

SELECT * FROM linkedserver...tablename

If you’re like me that query will give you an error message instead of a result set. So you will Google the error and be told by forum posts the world over that the openquery function is your only hope.

Now openquery is a great little piece of work but it doesn’t contribute much to code-readability. But since it’s your only hope, you’ll try to clean things up by creating elaborate views that mimic the tables in the linked server and then using those views in other views until the whole mess is so complicated that all of your queries timeout and you spend most of your database time watching a progress bar and wondering why life hates you.

Here’s the alternative.

  1. Go to the provider options screenIn SQL Server 2005 you can see the list of providers in a folder above the linked server (assuming you have appropriate permissions). Right click on MSDASQL and go to properties. In SQL Server 2000, the provider options button is in the dialog box where you create the linked server.
  2. Check the box that says “level zero only”

I don’t know what this means (even after reading the definition). I think it means that the SQL Server won’t do any optimization of the result set (it will be the responsibility of the linked server) but that’s just a guess.

I do know that after checking that box, my four part query worked. It took me about three days of searching to find that answer at the bottom of a thread somewhere so I’m posting it here in hopes that the Google gods will smile upon it.

Also thank you Alexandre Léveillé.

Rage and technology

This is an exercise in taking two different concepts and bringing them into togetherness and love. Please keep your divs inside the allotted browser window. No malformed code allowed, not even in the comment box. Today’s post is brought to you by the letters “ooooooooh” and the word “lovely”. Lets now commence with the sense making.

Rage

For the past few weeks I’ve been watching my good buddy (you know the one with too much spare time) whenever he can pull himself away from the PSP as he manuevers the incredibly hot (and viscious) Kratos on his quest to kill Ares the God of War . What a sentence.

Now some of you might be thinking things like “that’s got to be boring” or “normal people would prefer to play the game themselves”. Not at all. This game is awesome and has only been made more awesome by the fact that I don’t have to worry about being eaten by Cerebus puppies and can pay attention to things like the lovely tilework and the fact that in a certain room you get three warnings before the floor opens up and you fall to your death.

Kratos looking hot and bloody

Also it can rest heavily on someone elses concious that we missed the sex minigame or that to progress past a certain point requires “the ultimate sacrifice”. I rather enjoy the decapitations and breaking of necks and the ripping off (and out) of vital body parts. I even think it’s humorous that Kratos can kill the innocent run-around-in-the-middle-of-the-fight-with-my-hands-over-my-head bystanders for some more rage. but the sacrifice thing would have probably taken me a couple hours to figure out and sort of threw me off. The really odd and addictive part is that we’ve got to be almost to the middle of the game and and I’ve learned more about the story from the splash page on the game site than from the 8 or so hours of (watched) gameplay.

It does cause a tiny bit of anxiety that Jordan’s method of gaming is to go immediately to the most obvious next step (say killing all 600 medusas) and never look back whereas I tend to explore every accessible unit of space before weighing my options (ooohh you mean I can get past them without actually killing them all?) and moving on. Jordan has been very good about sensing my anxiety when it reaches critical points and going back to explore. Over all it’s a pretty synergetic mix of running commentary, sarcastic interjection and proper appreciation that reminds me of the good old days of web dev.

The Technology

In other news.. I have joined the masses of people in Tallahassee (and around the world) that own a cell phone. I’m rather happy about it even though it wasn’t my idea and left up to me would have probably never happened. But it wasn’t left up to me and I picked it up at Greyhound package express almost a week ago. I almost have my number memorized.
Samsung e105. Sleek and pretty
It’s a lovely little flip phone with no camera, no keyboard, no intergalatic remote control… it’s just a phone. And I love it that way. It does have the capability for instant messaging and web browsing but I’m not impressed. I’m currently doing both of those things quite well on a 19 inch flat panel monitor with a nice full sized keyboard and wireless mouse. The thought of switching to an almost-two-inch cell phone display with a number pad is not appealing.

We’re using T-mobile and my phone is Samsung and between the two they have the worst user manual and written documentation ever. Ok it’s not the worst ever but kinda bad isn’t as dramatic. Basically I’ve been trying to figure out how I need to enter numbers into the phonebook so that they work when I try to call them. Seems like it should be a pretty basic need but I appear to be wrong since no help exists on the site or in the rather thick (and mostly useles) user manual for the phone. Such is life.

In conclusion…

So thats the news from Lake Sparkalyn. Where all the women are geeks, all the men are obsessive and all the cell phone manuals are a waste of time. Images taken from ign.com and samsung.com respectively.