Nope, but, boy, was it a coincidence! I use Scott Watermasysk's Graffiti Plug-in library to add Twitter notifications when I add new posts to this blog. Well, the weekend before last, I upgraded to Graffiti CMS 1.2 and blogged about it. The plug-in duly tweeted it. No problem.
The next post I made, on 23-Dec about Dell XPS support, wasn't. I eventually noticed, and wrote a fake manual tweet, resolving to work out what the issue was. Ditto for the next few blogs — it seems my resolutions don't have the force of real action — until this lunchtime, when I buckled down with some reheated Chick-fil-A nuggets to work out the problem.
Since the Twitter notification failure happened after I'd installed Graffiti 1.2, I couldn't really blame the upgrade. I looked at the Graffiti log and saw an error that looked like this:
Your tweet could not be sent: The remote server returned an error: (417) Expectation Failed.
Ha! Moments later, using the famed tech support line that is Google, I came across this blog post that detailed the exact problem. Twitter in their infinite wisdom don't accept the "100-Continue" expectation http header any more. The default for .NET apps is to supply it, and therefore .NET Twitter notification code has been failing ever since 23 December.
Since Scott provides the source code to his plug-in, it was the matter of moments to add the single line of code to turn off the 100-Continue expectation...
3: // Create the web request
4: System.Net.ServicePointManager.Expect100Continue = false; // <-- new line
5: HttpWebRequest request =
6: WebRequest.Create("http://twitter.com/statuses/update.xml") as HttpWebRequest;
..and this post will be the test.
Kruder & Dorfmeister - Definition