
<rss version="2.0">
	<channel>
		<title>KeyLimeTie RSS Feed</title>
		<link>http://www.keylimetie.com</link>
		<description>KeyLimeTie RSS Feed</description>
		<language>en-us</language>
		<image>
			<title>KeyLimeTie RSS Feed</title>    
			<link>http://www.keylimetie.com</link>
			<url>http://www.keylimetie.com/Common/Images/custom/RSSFeedLogo.jpg</url>
			<width>150</width>
			<height>100</height>
		</image>
		
				<item>
					<title>Disable PDB File Generation in Release Mode</title> 
					<link>http://www.keylimetie.com/Blog/2008/4/15/Disable-PDB-File-Generation-in-Release-Mode/</link> 
					<description><![CDATA[
		Migrating code to a Production environment is not a difficult task, but I have seen developers do some weird stuff. I have seen developers migrated code compiled for debug and then wonder why the site doesn't run very fast...not common, but really does happen. I have seen developers migrate the entire source code for a project to the Production environment. They call it their "back up" location. Ever hear of VSS? These are bad practices that should be avoided.Have you ever noticed that code you build for Release or Publish still generates a PDB file? Up until recently I really didn't think much of it, but one day I got curious. I did a little research and found a great blog on compiling options and the implications. In short, you can disable generation of the PDB file (see image below), but it's not recommended. Read this article for more details:
		
				http://blog.vuscode.com/malovicn/archive/2007/08/05/releasing-the-build.aspx
				
				
				
		
]]></description> 
					<pubDate>Wed, 16 Apr 2008 01:52:06 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2008/4/15/Disable-PDB-File-Generation-in-Release-Mode/Default\.aspx</guid>
				</item>
			
				<item>
					<title>How to check for hexidecimal characters</title> 
					<link>http://www.keylimetie.com/Blog/2008/3/28/How-to-check-for-hexidecimal-characters/</link> 
					<description><![CDATA[If you haven't come across it yet, hexidecimal characters are not allowed in XML documents and cause problems when trying to display or work with them. When working with 3rd party data in XML (not received via a web service), it's always a good idea to validate the data. If you see an error like "hexidecimal value 0x04, is an invalid character, Line 1 Position 20154755", your problem is the data in the XML document. We recently came across this issue and created a simple method to check for valid characters:
1private bool IsValidString(string input)
2{
3    try
4    {
5        char[] values = input.ToCharArray();
6        foreach (char c in values)
7        {
8            //Get the integral value of the character
9            int value = Convert.ToInt32(c);
10            //Valid character (space -> tilde) see: http://www.asciitable.com
11            if (value  126)
12                return false;
13        }
14    }
15    catch
16    {
17        return false;
18    }
19    return true;
20}]]></description> 
					<pubDate>Sat, 29 Mar 2008 01:45:19 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2008/3/28/How-to-check-for-hexidecimal-characters/Default\.aspx</guid>
				</item>
			
				<item>
					<title>KeyLimeTie Log Cleaner (file pruning application) - FREE!</title> 
					<link>http://www.keylimetie.com/Blog/2008/3/16/KeyLimeTie-Log-Cleaner-FREE/</link> 
					<description><![CDATA[
    With all of the applications running on a server, it is important to keep their
    output pruned. Even with a basic server running a few websites, you can expect to
    have:
    - IIS logs
    - SQL Server database backups
    - Application-specific logging
    
    Over time, these files can consume a lot of disk space and potentially disable a
    server. Over the past 5 years, I have worked on-site with nine clients. Of these
    nine clients, seven of them have encountered this problem. In fact, my most recent
    client had this problem last week! It happens so often that when someone said the
    server was was running slow and throwing errors to the web browser, the first thing
    I said was "I bet the hard drive is full"...and it was.
    
    Why does it happen so often? There are many reasons, but the main reason is because
    nobody is monitoring the disk space (or monitoring tools are not installed) and
    the files aren't being properly pruned or archived. To resolve this issue, I created
    the KeyLimeTie Log Cleaner application free for anyone to download and use. I purposely
    made it very simple to configure and install; there are plenty of features and options
    we could add.
    
    To get it running:
    1. Download Application
    2. Unzip the files to a folder on your hard drive.
    3. Open the "profiles.xml" file and edit it for your needs.
    
    xml version="1.0" standalone="yes"?>
Profiles>
	Profile>
		!-- Keep this application's logs pruned to 15 days -->
		Description>KeyLimeTie Log CleanerDescription>
		FolderPath>D:\Projects\KeyLimeTie\KeyLimeTie.LogCleaner\Logs\FolderPath>
		Extension>txtExtension>
		DelOlderThanDays>15DelOlderThanDays>
		Recursive>falseRecursive>
	Profile>
	Profile>
		!-- Example: Keep IIS Logs pruned to 15 days -->
		!-- Setting Recursive true prunes all ftp and website logs -->
		!-- As new websites are added, no need to update profiles -->
		Description>All IIS LogsDescription>
		FolderPath>C:\Windows\system32\LogFiles\FolderPath>
		Extension>logExtension>
		DelOlderThanDays>15DelOlderThanDays>
		Recursive>trueRecursive>
	Profile>
	Profile>
		!-- Example: Keep SQL Server backups pruned to 1 week -->
		!-- Setting Recursive true prunes all database backups -->
		!-- As new databases are added, no need to update profiles -->
		Description>All Database BackupsDescription>
		FolderPath>D:\Databases\Backups\FolderPath>
		Extension>bakExtension>
		DelOlderThanDays>7DelOlderThanDays>
		Recursive>trueRecursive>
	Profile>
Profiles>


    Fields:
    
    - Description: Profile description
    - Folder Path: Location of files to be deleted
    - Extension: Extension of files to be deleted
    - DelOlderThanDays: Number of days to delete files older than today
    - Recursive: Tells application to look for files in subdirectories
    
    Schedule Application:
    I installed the software on a few servers and simply created a Scheduled Task through
    Windows. I have it set to run every day at 4am (after the SQL Server backups are
    run).
    
    Some ideas...
    - Change "Extension" option to be "MatchPattern". Right now, the code searches for
    all files by the extension. You can put "*" in there and it'll prune all files,
    but it could be made to be more powerful.
    - Create as Windows Service. I have created similar applications as Windows Services...and
    it's very easy to change this to a Windows Service. But I wanted this first version
    to be very simple and simple to install. I have seen people have issues with installing
    Windows Services.
    - Create an interface to manage the profiles. It's so easy to update this really
    isn't necessary.

]]></description> 
					<pubDate>Sun, 16 Mar 2008 18:54:19 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2008/3/16/KeyLimeTie-Log-Cleaner-FREE/Default\.aspx</guid>
				</item>
			
				<item>
					<title>Internet Explorer 8 Has Arrived!</title> 
					<link>http://www.keylimetie.com/Blog/2008/3/6/Internet-Explorer-8-Has-Arrived/</link> 
					<description><![CDATA[
		From "ReadWriteWeb"...Microsoft's next-generation web browser, Internet Explorer 8, has arrived. In a surprising move, after the demo of IE8 and its new features at today's session of the MIX08 conference, the startling announcement was made: "It's available for download now". The new browser showcases many new features and improvements, like Facebook and eBay integration, standards compliance, and the ability to work with AJAX web pages. What's most notable about IE8, though, is more than a sum of its parts. If anything, this launch shows that Microsoft is not taking Firefox's creep into browser market share lightly.IE8 New Features Shown At MIX08Standards ComplianceThere were hints that IE8 would be a remarkable offering on the IE Blog as they released tidbits about the browser's capabilities. For example, the announcement of IE8's passing of the Acid2 test (a test for standards compliance) marked a milestone in IE8's development. The standards mode was originally going to be turned off by default letting web developers code for it by including a "meta" tag to make use of IE8's new standards compliant mode. Later, Microsoft came to their senses and made the default the standards-compliant mode. Meanwhile, Firefox also claims to have passed the Acid 2 test, but an open bug on bugzilla.mozilla.org seems to say otherwise. One commenter on the thread notes, "So, we essentially do pass the test. However, in some situations, it might still fail, that's why this bug is open."Facebook IntegrationWith a Flock-like feature as an unexpected surprise, Microsoft capitalized on their partnership with the popular social networking site, Facebook, to allow IE8 users the ability to get status updates from Facebook right from their browser toolbar.eBay IntegrationLike Facebook, this feature also uses IE8's new technology, called "WebSlices", which introduces a new way to get updates from other sites via the browser itself, without having to visit the web site. With WebSlices, IE8 beta users can subscribe to portions of a page that update dynamically, in order to receive updates from that page as contentchanges. eBay will offer webslices, too, letting you track your auctions from the browser toolbar. Basically, WebSlices look like Favorites on your Links toolbar but they have a little arrow next to them - clicking on this arrow will show you a small window of live web content. Live Maps IntegrationAnother WebSlice was integration with Live Maps. It appeared that you could even highlight text on a page, like an address, and then right-click and choose Live Maps from the context menu to get a WebSlice preview of that location on a map in a small pop-up window.Integration with Me.diumMe.dium integration will be supported in IE8 via WebSlices. Me.dium will now help web surfers discover and view WebSlices directly from the sidebar. The Me.dium sidebar will alert users to the presence of WebSlices on any page – and even allows users to read each WebSlice, without leaving the Sidebar. In addition, Me.dium will make real-time recommendations for other WebSlices on other relevant web pages and provides direct links to them based on the real time activity of other Me.dium users.Working with AJAX PagesIE8 will offer better functionality when it comes to AJAX web pages. The example showed a page where you could zoom in using AJAX technology. Previously, hit the IE "Back" button would take you back to the last page you were on. Now, "Back" will zoom you out.We can now find out what other features IE8 has to offer, since the beta is now publicly available for download. To get IE8, you can download it from here:http://www.microsoft.com/windows/products/winfamily/ie/ie8/readiness/Install.htm.
		 
]]></description> 
					<pubDate>Fri, 07 Mar 2008 01:23:50 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2008/3/6/Internet-Explorer-8-Has-Arrived/Default\.aspx</guid>
				</item>
			
				<item>
					<title>Safely restart an ASP.NET remotely</title> 
					<link>http://www.keylimetie.com/Blog/2008/2/12/Safely-restart-an-ASPNET-remotely/</link> 
					<description><![CDATA[
Every once in awhile, an ASP.NET website may need to be restarted. There are a few ways to do this: kill the worker process (too forceful), restart IIS (restarts all websites) or modify the web.config (best choice). Instead of FTP'ing the web.config down and back up or logging onto the server to update the web.config, why not create a web page that allows you to easily update the "last write date" on the file. The .NET Framework monitors website files and when the web.config write date changes, it automatically restarts that website. Here's code you can drop into an ASP.NET web page to accomplish this:




	function ToggleSourceCodeRegion(regionNumber)
	{
		var divRegion = document.getElementById('region' + regionNumber);
		var divRegionBlock = document.getElementById('regionBlock' + regionNumber);

		if (divRegion.style.display == 'inline')
		{
			divRegion.style.display = 'none';
			divRegionBlock.style.display = 'inline';
		}
		else
		{
			divRegion.style.display = 'inline';
			divRegionBlock.style.display = 'none';
		}
	}
1"C#" %>
2
3"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
5"server">
6    protected void Page_Load(object sender, EventArgs e)
7    {
8        lblMessage.Text = "";
9    }
10
11    protected void btnRestart_Click(object sender, EventArgs e)
12    {
13        if (txtPassword.Text.Trim().ToUpper() ==
14            System.Configuration.ConfigurationManager.AppSettings["ResetSitePassword"].ToString().Trim().ToUpper())
15        {
16            string webConfigPath = Server.MapPath("Web.config");
17            System.IO.File.SetLastWriteTime(webConfigPath, DateTime.Now);
18            Session.Abandon();
19            Response.Redirect("/");
20        }
21        else
22            lblMessage.Text = "Invalid password";
23    }
24
25
26"http://www.w3.org/1999/xhtml">
27"server">
28    Restart Website
29
30
31    "aspnetForm" runat="server">
32        Password:
33        "txtPassword" runat="server" TextMode="Password">
34        "btnRestart" runat="server" Text="Restart" OnClick="btnRestart_Click">
35        
36        "lblMessage" runat="server" ForeColor="Red">
37    
38
39]]></description> 
					<pubDate>Tue, 12 Feb 2008 21:15:04 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2008/2/12/Safely-restart-an-ASPNET-remotely/Default\.aspx</guid>
				</item>
			
				<item>
					<title>Don&amp;quot;t Search For Domain Names on Network Solutions!</title> 
					<link>http://www.keylimetie.com/Blog/2008/2/9/Dont-Search-For-Domain-Names-on-Network-Solutions/</link> 
					<description><![CDATA[
		If you check for a domain name on Network Solutions, you will have to buy it there or risk losing it forever!
		When you check for a domain name on Network Solutions, they immediately lock that domain for 4 days. If you want the domain, you must buy it through them for $35. If you don't and the 4 days pass, it becomes public to domain name snipers and may be unavailable forever! Don;t believe me, try it your self:1. Go to Network Solutions (http://www.netsol.com) and search for a domain name. I tried keylimetierocks.com2. It's available, but I don't buy it.3. Immediately go to GoDaddy (http://www.godaddy.com) and search for the same domain name.4. It's not available!]]></description> 
					<pubDate>Sun, 10 Feb 2008 05:06:51 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2008/2/9/Dont-Search-For-Domain-Names-on-Network-Solutions/Default\.aspx</guid>
				</item>
			
				<item>
					<title>How to use Visual Studio 2003 in Windows Vista</title> 
					<link>http://www.keylimetie.com/Blog/2008/1/17/Using-VS7-in-Vista/</link> 
					<description><![CDATA[
		
				This blog entry is intended to illustrate the steps necessary to set up a Windows Vista machine to use Visual Studio 2003 (.NET 1.1).  Most of the information was obtained from the following blogs: 
		
		
				
						http://citruslime.blogspot.com/2007/04/visual-studio-2003-web-debugging-on.html
				
		
		
				
						http://blogs.iis.net/brian-murphy-booth/archive/2007/03/09/how-to-setup-asp-net-v1-1-visual-studio-net-2003-projects-on-iis7-vista.aspx
				
		
		
				
				
						 
				
		
		
				
						
								
										
												Steps
										
								
						
				
		
		
				
						
								
										1.
										       
								
						
						
								Setup your user account as a local admin on the Vista machine and switch off the "user account control”.
						
				
		
		
				
						
								
										a.
										       
								
						
						
								Open Control Panel -> User Accounts.
						
				
		
		
				
						
								
										b.
										      
								
						
						
								Select “Change your account type”.
						
				
		
		
				
						
								
										c.
										       
								
						
						Select “Administrator” (if not already Administrator).
				
		
		
				
						
						
								
								
								
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
										
								
								
								
								
								
						
				
		
		
				
						
								
										d.
										      
								
						
						Press “Change Account Type”.
				
		
		
				
						
								
										e.
										      
								
						
						Select “Turn User Account Control on or off”.
				
		
		
				
						
								
										f.
										        
								
						
						Uncheck “Use User Account Control (UAC) to help protect your computer”.
				
		
		
				
				
		
		
				
						
								
										g.
										       
								
						
						Press “OK”.
				
		
		
				
						
								
										2.
										       
								
						
						
								Ensure your user account is included in the Debugger User group.
						
				
		
		
				
						
								
										a.
										       
								
						
				
				
						
								Note: It appears this is not possible in certain versions of Vista, such as Home Premium.  Click the following link for more information:  
						
						
								http://windowshelp.microsoft.com/Windows/en-US/Help/0faddcfc-e2a9-4297-a429-3f7e83fe6e361033.mspx
						
						.
				
		
		
				
						
								
										3.
										       
								
						
						
								Ensure that .NET 1.1 **SP1** is properly installed.
						
				
		
		
				
						
								
										·
										         
								
						
						
								Vista does not include .NET v1.1 by default.
						
				
		
		
				
						
								
										·
										         
								
						
						
								Because .NET 1.1 is not included by default, .NET v1.1 *SP1* is also not included.
						
				
		
		
				
						
								
										·
										         
								
						
						
								Without SP1, W3WP.exe will crash when running an appPool under v1.1 due to DEP
						
				
		
		
				
						
								
										·
										         
								
						
						
								To check this, make sure that "c:\Windows\Microsoft.NET\Framework\v1.1.4322\mscorsvr.dll" is version "1.1.4322.2032" or higher.
						
				
		
		
				
				
		
		
				
						
								
										·
										         
								
						
						
								Unless you are 100% sure that SP1 for .NET is installed, you *really* should double-check this.
						
				
		
		
				
						
								
										·
										         
								
						
				
				
						If you need to install .NET 1.1 SP1, you can download the upgrade here: 
						
								http://www.microsoft.com/downloads/details.aspx?familyid=A8F5654F-088E-40B2-BBDB-A83353618B38&displaylang=en.
						
				
		
		
				
						
								
										4.
										       
								
						
						Enable IIS 6.0 compatiblity.
				
		
		
				
						
								
										a.
										       
								
						
						
								Open "Control Panel".
						
				
		
		
				
						
								
										b.
										      
								
						
						
								Double-click "Programs and Features".
						
				
		
		
				
						
								
										c.
										       
								
						
						
								Expand "Internet Information Services".
						
				
		
		
				
						
								
										d.
										      
								
						
						
								Click on “Turn Windows Features On and Off”.
						
				
		
		
				
						
								
										e.
										      
								
						
						
								Expand "Web Management Tools".
						
				
		
		
				
						
								
										f.
										        
								
						
						
								Check “IIS 6 Management Compatibility”.
						
				
		
		
				
				
		
		
				
						
								
										5.
										       
								
						
						
								Enable ASP.NET Application Development Features, if not already done so.
						
				
		
		
				
						
								
										a.
										       
								
						
						
								Open "Control Panel".
						
				
		
		
				
						
								
										b.
										      
								
						
						
								Double-click "Programs and Features".
						
				
		
		
				
						
								
										c.
										       
								
						
						
								Expand "Internet Information Services".
						
				
		
		
				
						
								
										d.
										      
								
						
						
								Click on “Turn Windows Features On and Off”.
						
				
		
		
				
						
								
										e.
										      
								
						
						Expand “World Wide Web Services”.
				
		
		
				
						
								
										f.
										        
								
						
						Expand “Application Development Features”.
				
		
		
				
						
								
										g.
										       
								
						
						Check “ASP.NET”.
				
		
		
				
						
								
										                                                 
										Note: 
										 
								
						
						“.NET Extensibility”, “ISAPI Extensions”, and “ISAPI Filters” are dependencies, so they become automatically checked.
				
		
		
				
						
								
										6.
										       
								
						
						
								Register v1.1 with IIS.
						
				
		
		
				
						
								
										a.
										       
								
						
						
								Open a CMD prompt.
						
				
		
		
				
						
								
										b.
										      
								
						
						
								Change your directory to c:\Windows\MIcrosoft.net\Framework\v1.1.4322.
						
				
		
		
				
						
								
										c.
										       
								
						
						
								Run "aspnet_regiis -ir -enable".
						
				
		
		
				
						
								
										·
										   
								
						
						
								"ir" registers v1.1 with IIS but doesn't change any existing script mappings.
						
				
		
		
				
						
								
										·
										   
								
						
						
								"enable" marks aspnet_isapi.dll as "Allowed" under "ISAPI and CGI Restrictions".
						
				
		
		
				
						
								
										·
										   
								
						
						
								aspnet_regiis should also create a new AppPool under "Application Pools" called "ASP.NET 1.1" that is configured with the "Classic" pipline, and "Enable32BitAppOnWin64" set to true if a 64-bit OS.
						
				
		
		
				
				
		
		
				
						
								
										7.
										       
								
						
						
								Make the new "ASP.NET 1.1" appPool the default.
						
				
		
		
				
						
								
										a.
										       
								
						
						
								Open the IIS manager.
						
				
		
		
				
						
								
										b.
										      
								
						
						
								Select the "Web Sites" folder.
						
				
		
		
				
						
								
										c.
										       
								
						
						
								Under "Actions" on the upper right, click "Set Web Site Defaults...".
						
				
		
		
				
				
		
		
				
						
								
										d.
										      
								
						
						
								Change the "Application Pool" setting to "ASP.NET 1.1".
						
				
		
		
				
				
		
		
				
						
								
										8.
										       
								
						
						
								**Alternative step to 7** - Change the AppPool to "ASP.NET 1.1" after creating the ASP.NET project instead of making it the default
						
				
		
		
				
						
								
										a.
										       
								
						
						
								Create the v1.1 ASP.NET project via Visual Studio. Attempting to run the project at this point will fail if the 1.1 appPool is not the default.
						
				
		
		
				
						
								
										b.
										      
								
						
						
								Open the IIS manager.
						
				
		
		
				
						
								
										c.
										       
								
						
						
								Right-click the newly create application directory and choose "Advanced Settings".
						
				
		
		
				
						
								
										d.
										      
								
						
						
								Change the "Application Pool" to "ASP.NET 1.1".
						
				
		
		
				
						
								
										e.
										      
								
						
						
								Go back to Visual Studio and attempt to run/debug project.
						
				
		
		
				
						
								
										9.
										       
								
						
				
				
						Adjust ISAPI and CGI restrictions in IIS.
				
		
		
				
						
								
										a.
										       
								
						
						
								
										Go into IIS
								
						
				
				
						7.0 manager and select your server.
				
		
		
				
						
								
										b.
										      
								
						
				
				
						Select ISAPI and CGI restrictions.
				
		
		
				
				
		
		
				
						
								
										c.
										       
								
						
				
				
						Ensure ASP v1.1 has the restriction set to Allowed.
				
		
		
				
				
		
		
				
						
								
										10.
										   
								
						
						
								Launch Visual Studio 2003 as Administrator.
						
				
		
		
				
						
								
										11.
										   
								
						
						
								Create a simple web application with some event handling to test debugging (a button that displays text in a label control is what I used to test).
						
				
		
		
				
						
								
										12.
										   
								
						
						Attach to the w3wp.exe process.
				
		
		 
		
				
						
								
										13.
										   
								
						
						Set breakpoints where appropriate.
				
		
		
				
						
								
										14.
										   
								
						
						Launch the website in a browser (eg. 
				
				
						http://localhost/YourWebApp/YourPage.aspx
				
				).
		
		
				
						
								
										15.
										   
								
						
						Ensure your breakpoints are being hit.
				
		
		
				
						
								
										16.
										   
								
						
						
								That’s it!  
								Happy coding.
						
				
		
		 
]]></description> 
					<pubDate>Thu, 17 Jan 2008 23:14:48 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2008/1/17/Using-VS7-in-Vista/Default\.aspx</guid>
				</item>
			
				<item>
					<title>KeyLimeTie Mass Emailer - Free!</title> 
					<link>http://www.keylimetie.com/Blog/2008/1/2/KeyLimeTie-Mass-Emailer-Free/</link> 
					<description><![CDATA[Over the years, we have built a number of Mass Emailing applications for customers (some web, some windows apps).I took a recent version I created and added more to it and am now making it available to anyone.Download ApplicationFeatures - Use email list with custom fields from database or cut-and-paste in an email list. - Validate email addresses and view invalid email addresses. - Specify all fields of an email including From, Reply To, CC, BCC, Subject and Body. Attachments coming soon! - Allows for custom fields in the title and body. - Send test email to verify formatting accuracy.]]></description> 
					<pubDate>Thu, 03 Jan 2008 02:42:02 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2008/1/2/KeyLimeTie-Mass-Emailer-Free/Default\.aspx</guid>
				</item>
			
				<item>
					<title>How to Communicate between ASP.NET and Flash</title> 
					<link>http://www.keylimetie.com/Blog/2007/12/18/How-to-Communicate-between-ASPNET-and-Flash/</link> 
					<description><![CDATA[Ever wonder how to send data back and forth between ASP.NET and Flash?About a year ago, we designed and built the DIY Floor Plan website (http://www.diyfloorplan.com). We needed the ability to send data between the Flash Floor Plan Designer and the ASP.NET web pages that saved the data to the database. We wanted the floor plan designer to be as "dumb" as possible...simply design the floor plan and allow the ASP.NET application manage the data. Here's some quick code snippets that will show you how to do it very easily.ViewFloorPlan.aspxThis page displays the public, non-editable version of the floor plan. The important thing here is that we put the Floor Plan GUID in a Flash Parameter. We use a GUID to prevent users from seeing floor plans that are not publicly available by the floor plan administrator. The Flash application uses the GUID as the key to communicate with the ASP.NET application.1"text/javascript">
2    var so = new SWFObject("/flash/map_client.swf", "map_client", "775", "650", "6", "#ececec");
3    so.addParam("menu", "false");
4    so.addParam("quality", "high");
5    so.addParam("wmode", "transparent");
6    so.addParam("allowScriptAccess", "sameDomain");
7    so.addParam("movie", "/flash/map_client.swf");
8    so.addParam("bgcolor", "#ffffff");
9    so.addParam("FlashVars", "FloorPlanGUID=");
10    so.write("flashcontent1");
11FlashGetData.aspxThis page is used by the Flash application to get data. The ASPX portion of this web page has no HTML or controls. When processing the Flash application's request, we output the data it needs in the HTML in a name-value pair. A little explanation...this page is called for the floor plan XML or an individual booth's details (name, address, etc.). After calling the database to get the data, it's written to the output HTML as field=value.1public partial class FlashGetData : System.Web.UI.Page
2{
3protected void Page_Load(object sender, EventArgs e)
4    {
5       if (Request.QueryString["Mode"] != null)
6        {
7            try8            {
9                //Extract mode10                Enums.ModeEnum mode =                            (Enums.ModeEnum)int.Parse(Request.QueryString["Mode"].ToString());
1112                //Process based on mode13                DataSet ds = null;
14                DataRow row;
15                if (mode == Enums.ModeEnum.RequestFloorPlan)
16                {
17                    //Extract Querystring parameters18                    string floorPlanGUID = Request.QueryString["FloorPlanGUID"].ToString();
1920                    //Get the data21                    ds = FloorPlans_BLL.SelectFloorPlansByFloorPlanGUID(new Guid(floorPlanGUID));
22                    row = ds.Tables[0].Rows[0];
23                    Response.Write("FloorPlanXML=" + row["FloorPlanXML"].ToString());
24                }
25                else if (mode == Enums.ModeEnum.RequestCompanyDetails)
26                {
27                    //Extract Querystring parameters28                    string floorPlanGUID = Request.QueryString["FloorPlanGUID"].ToString();
29                    string boothID = Request.QueryString["BoothID"].ToString();
3031                    //Get the data32                    ds = Companies_BLL.SelectCompaniesByFloorPlanIDBoothID(                               new Guid(floorPlanGUID), boothID);
33                    Response.Write("CompanyDetails=" + BuildCompanyDetails(boothID, ds));
34                }
35            }
36            catch (Exception ex)
37            {
38                Helpers.ProcessException(ex);
39            }
40        }
41    }
42}FlashSaveData.aspxThis page is used in the administration area. Again, the ASPX portion of this web page has no HTML or controls.The Flash movie executes a command like: xmlDoc.sendAndLoad("FlashSaveData.aspx?FloorPlanGUID=xxx-xxx-xxx-xxx", returnXML, "POST");The important point of this code is Line 19. The Flash application posts data in the Request stream.1public partial class FlashSaveData : System.Web.UI.Page
2{
3protected void Page_Load(object sender, EventArgs e)
4    {
5        //The Flash movie executes a command like:6        //xmlDoc.sendAndLoad("FlashSaveData.aspx?FloorPlanGUID=xxx-xxx-xxx-xxx",                    returnXML, "POST");78         XmlDocument doc = null;
9         FloorPlans floorplans = null;
10        FloorPlanCompanies fpc = null;
11        DataSet ds = null;
12        try13        {
14            if (Request.QueryString["FloorPlanGUID"] != null)
15            {
16                //Extract GUID and XML17                string floorPlanGUID = Request.QueryString["FloorPlanGUID"].ToString();
18                doc = new XmlDocument();
19                doc.Load(Request.InputStream);
2021                //Get the FloorPlan row22                ds = FloorPlans_BLL.SelectFloorPlansByFloorPlanGUID(new Guid(floorPlanGUID));
23                DataRow row = ds.Tables[0].Rows[0];
2425                //Build FloorPlans object26                floorplans = new FloorPlans();
27                floorplans.FloorPlanID = Int32.Parse(row["FloorPlanID"].ToString());
28                floorplans.FloorPlanGUID = new Guid(row["FloorPlanGUID"].ToString());
29                floorplans.UserID = Int32.Parse(row["UserID"].ToString());
30                floorplans.Title = row["Title"].ToString();
31                floorplans.URL = row["URL"].ToString();
32                floorplans.FloorPlanXML = doc.InnerXml;
33                floorplans.Active = (bool)row["Active"];
34                floorplans.RewriterID = Int32.Parse(row["RewriterID"].ToString());
3536                //Make sure all booths are now in the database37                XmlNodeList objNodes = doc.SelectNodes("./floorplan/booths/boothtxt");
38                foreach (XmlNode objNode in objNodes)
39                {
40                    fpc = new FloorPlanCompanies();
41                    fpc.FloorPlanID = Int32.Parse(row["FloorPlanID"].ToString());
42                    fpc.BoothID = objNode.InnerXml;
43                    fpc.CompanyID = 0;
44                    FloorPlanCompanies_BLL.SaveFloorPlanCompanies(fpc, false, null);
45                }
4647                //Save to database48                FloorPlans_BLL.UpdateFloorPlans(floorplans);
49            }
50            else51                throw new Exception("FloorPlanGUID missing");
52        }
53        catch (Exception ex)
54        {
55            Helpers.ProcessException(ex);
56        }
57        finally58        {
59            if (ds != null)
60            {
61                ds.Dispose();
62                ds = null;
63            }
64            fpc = null;
65            floorplans = null;
66            doc = null;
67        }
68    }
69}]]></description> 
					<pubDate>Wed, 19 Dec 2007 05:29:46 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2007/12/18/How-to-Communicate-between-ASPNET-and-Flash/Default\.aspx</guid>
				</item>
			
				<item>
					<title>How to make an AJAX Postback with JavaScript</title> 
					<link>http://www.keylimetie.com/Blog/2007/12/3/How-to-make-an-AJAX-Postback-with-JavaScript/</link> 
					<description><![CDATA[Recently, we were working on a project that required us to make an AJAX postback with a table cell (TD) onclick event. We were "forced" to do this because the webpage designer wanted the search results displayed in a table and the TD's had onmouseover, onmouseout and onmouseclick events. The way he designed it was very nice and we didn't want to change it because AJAX for .NET didn't natively support the TD click event.We quickly searched the web for an answer and couldn't find anything. Over the past few months many others asked how to do it too, but nobody could provide an answer. It's really not that difficult...you just need to be a little creative and think how AJAX works in ASP.NET.In our project, we were binding location search results to a Repeater. In the onclick event, we added code to make a call to JavaScript function "makeAJAXPostback" and passed the ID. Originally, we tried to make a call to __doPostBack, but that forces a full page postback:1"rptSearchResults" runat="server">
2    
3        "100%" border="0" cellpadding="0" cellspacing="4">
4            
5                
6                    class="agentbox" onmouseover="style.backgroundColor='#e0e8f3';"                              onmouseout="style.backgroundColor='#f1f1f1';"7                        onclick="makeAJAXPostback('ID")%>')">
8                        "DisplayName")%>
9                        
10                        "Address1")%>
11                        
12                        "City")%>
13                        
14                        "StateIDCode")%>
15                        "Zip")%>
16                        
17                        "Phone")%>
18                    
19                
20        
21    
22
23At the bottom of the page, we added a the "makeAJAXPostback" function.We also added a hidden field and a hidden HTML submit button:1            "submit" id="btnTDClicked" name="btnTDClicked" style="display: none" />
2            "hidden" id="hidTDClickID" name="hidTDClickID" />
3        
4    
5    "text/javascript">
6        function makeAJAXPostback(TDClickID)
7        {
8            document.forms[0].hidTDClickID.value = TDClickID;
9            document.forms[0].btnTDClicked.click();
10        }
11    
12
13When the TD cell is clicked, the "makeAJAXPostback" function is called, the ID is put in the hidden field and the hidden button is clicked. Because the AJAX Toolkit handles all form postbacks, the button click is automatically made via AJAX.All that's left is to handle the postback on the server. In Page_Load, we simply check if the hidden field is populated and process accordingly:1//Handle TD Clicked Event when user clicks search results2if (Request.Form["hidTDClickID"] != null &&
3    Request.Form["hidTDClickID"].ToString() != "")
4    TDClicked(int.Parse(Request.Form["hidTDClickID"].ToString()));]]></description> 
					<pubDate>Mon, 03 Dec 2007 22:00:21 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2007/12/3/How-to-make-an-AJAX-Postback-with-JavaScript/Default\.aspx</guid>
				</item>
			
				<item>
					<title>Convert Plain Text to MD5 Hash</title> 
					<link>http://www.keylimetie.com/Blog/2007/11/20/Convert-Plain-Text-to-MD5-Hash/</link> 
					<description><![CDATA[		Nothing groundbreaking here, but if you need to know how to convert plain text to an MD5 Hash, here you go:
		1using System;
2using System.Security.Cryptography;
3using System.Text;
45public static string ConvertToMD5(string plainText)
6{
7    byte[] input = Encoding.UTF8.GetBytes(plainText);
8    byte[] output = MD5.Create().ComputeHash(input);
9    return Convert.ToBase64String(output).Trim();
10}
		/html>]]></description> 
					<pubDate>Wed, 21 Nov 2007 04:08:32 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2007/11/20/Convert-Plain-Text-to-MD5-Hash/Default\.aspx</guid>
				</item>
			
				<item>
					<title>Enable File Upload on an AJAX Webpage</title> 
					<link>http://www.keylimetie.com/Blog/2007/11/8/Enable-File-Upload-on-an-AJAX-Webpage/</link> 
					<description><![CDATA[File uploads do not work when doing async postbacks due to security restrictions. Because of this, we have to add a PostBackTrigger. PostbackTriggers enable controls inside an UpdatePanel to cause a postback instead of performing an asynchronous postback. Here's a code snippet that shows how to accomplish this.                                                                                             By adding the PostbackTrigger, you can mix controls that make AJAX calls with controls that require the postback and maintain the good user experience. ]]></description> 
					<pubDate>Fri, 09 Nov 2007 03:51:35 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2007/11/8/Enable-File-Upload-on-an-AJAX-Webpage/Default\.aspx</guid>
				</item>
			
				<item>
					<title>Speed Up Your Site! 8 ASP.NET Performance Tips</title> 
					<link>http://www.keylimetie.com/Blog/2007/10/11/Speed-Up-Your-Site-8-ASPNET-Performance-Tips/</link> 
					<description><![CDATA[
		I see these "Top 10 Ways..." articles all the time, but this one was the first in a while that didn't restate what all of the other ones talk about.Website: http://www.sitepoint.com/article/aspnet-performance-tips1. Determine what to optimizeDiscusses quick, simple techniques such as tracing.2. Decrease the size of the view stateThis one really got my attention. ViewState is so powerful, but can kill your website too. With AJAX gaining so much momentum, ViewState compression is a must. The article even gives you the C# class! Storing ViewState on the server can also be a great technique.3. Decrease the bandwidth that my site usesHTTP Compression has been around for several years. With IIS 6.0, it requires no 3rd party controls or custom code. Why wouldn't you enable it today?4. Improve the speed of my siteOutput caching can improve site speed very quickly and easily. Nothing new here.5. Refresh cache when the data changesDepending on how you bind data to objects or store cache, this tip may or may not apply to you. But definitely worth reading.6. Gain more control over the ASP.NET cacheUsing the Cache class/object is a great technique, but only when it makes sense...do not overuse it.7. Speed up database queriesWe have helped many clients speed up their website throughout the years. Evaluating and optimizing the database is one of the easiest and best bang for your buck approaches. Just run down the list: Indexes, Stored Procs, Views, locking, etc.8. Troubleshoot slow queriesA quick guide to understanding execution plans.
]]></description> 
					<pubDate>Thu, 11 Oct 2007 17:17:50 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2007/10/11/Speed-Up-Your-Site-8-ASPNET-Performance-Tips/Default\.aspx</guid>
				</item>
			
				<item>
					<title>PayPal Payment Data Transfer (PDT) WebControls Fix</title> 
					<link>http://www.keylimetie.com/Blog/2007/9/4/PayPal-Payment-Data-Transfer-PDT-WebControls-Fix/</link> 
					<description><![CDATA[Over the past several years, we have implemented PayPal into our websites and many
of our customer websites. Since PayPal created their 
    Developer Program, the methods to access PayPal shopping carts and checkout
has continued to grow. There are easy a half dozen ways to do it today 
    [Learn More]. One popular method is the 
        Payment Data Transfer (PDT) program. Back on 1/28/2006, I blogged about
how to easily implement PDT into your website.


Problem: Throughout the life of the PDF program, several versions
of the PayPal WebControls have been released. The most recent version is v1.0.22.19341.
But there's a problem with the release that PayPal never resolved. When using the
DLLs and .NET Web Controls to test in the Sandbox environment, the UseSandbox property
is always ignored and the Postaction is always set to the Production environment.
This makes it impossible to test in their Sandbox environment.


Solution
We created a very simple class to override the PostAction property. See code below.

Download code


using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using PayPal.Web.Controls;

namespace PayPalCustom
{
    public class CustomUploadCompleteCartButton : UploadCompleteCartButton
    {
        public override string PostAction
        {
            get
            {
                return
this.UseSandbox ?
                    "https://www.sandbox.paypal.com/cgi-bin/webscr"
:
                    "https://www.paypal.com/cgi-bin/webscr";
            }
        }
    }
}

To implement into your website:
1. Add PayPalCustom.dll as a Reference in your application.
2. Change the "Register" tag at the top of your page to:

3. Change the UploadCompleteCartButton WebControl tag to



]]></description> 
					<pubDate>Tue, 04 Sep 2007 17:16:52 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2007/9/4/PayPal-Payment-Data-Transfer-PDT-WebControls-Fix/Default\.aspx</guid>
				</item>
			
				<item>
					<title>PayPal PDT Sandbox Setup</title> 
					<link>http://www.keylimetie.com/Blog/2007/8/1/PayPal-PDT-Sandbox-Setup/</link> 
					<description><![CDATA[I recently implemented a PayPal checkout solution using Payment Data Transfer (PDT) to retrieve the transaction details. 
Testing the transaction process required using PayPal Sandbox, which I have used before and for which I already had my acccount 
set up. But when my customer wanted to do some testing, I had them set up their own Sandbox account, and was 
reminded that the initial setup is not simple. Eventually, I had to provide step by step instructions to get them up and
running correctly.

Here are those instructions for anyone needing to go through this for the first time:
1. Go to https://developer.paypal.com/ and create a new PayPal Developer 
account. After confirming the account, log in and you will see:
        - Tab for Test Accounts – this is where you create Buyer and Seller accounts. A Seller account 
    provides you with a fake online store, and a Buyer account allows you to make fake purchases from that store.
        - Tab for Test Email – this is where all the order/payment emails are sent during test purchases. 
    The emails are contained within the Sandbox environment, not sent to external email accounts.
        - Tab for API Credentials – for a PDT application, ignore this tab completely. There is an Identity 
    Token here, but it is not the one needed for the "PayPalPDTID” in the web.config. There is also a seller password here, 
    but it is not the one you will use during testing.
2. In the upper right corner, click “Enter Sandbox”.
        - Log in to Sandbox using the Seller Test Account credentials. For PDT to work, go to “Profile” 
    tab, then “Selling Preferences”, then “Website Payment Preferences” and confirm you have the following settings:
            “Auto Return for Website Payments” is on, return URL is set to 
        http://www.yoursite.com/PDTHandler.aspx (or whatever page you use to process the transaction details.
            “Payment Data Transfer” is on. Note that this is where you get the Identity Token that 
        should be used in the web.config.

Back in the project, you need to open the web.config and check these settings:

appSettings>
	add key="RootURL" value="http://localhost:xxxxx/ProjectName/"/>
		   
	!-- Sandbox Settings -->
	add key="PayPalServer" value="https://www.sandbox.paypal.com/cgi-bin/webscr"/>
	add key="UseSandbox" value="true"/>
	add key="PayPalEmailAddress" value="Seller email address used to login to Sandbox"/>
	add key="PayPalPDTID" value="Identity Token from the Website Payment Preferences"/>		
appSettings>

You are finally ready to run the project and make a purchase. When it redirects to PayPal, make sure it goes to 
https://www.sandbox.paypal.com/cgi-bin/webscr and login 
using the Buyer Test Account credentials. Complete the purchase and wait for it to redirect back to the project. You should 
have a message page advising that the transaction failed or was completed.

Finally, you can go back to https://developer.paypal.com/, enter Sandbox, 
login using the Seller credentials, and under My Account - History, see a report of all the transactions posted.]]></description> 
					<pubDate>Wed, 01 Aug 2007 23:16:08 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2007/8/1/PayPal-PDT-Sandbox-Setup/Default\.aspx</guid>
				</item>
			
				<item>
					<title>Some Design Principles To Consider</title> 
					<link>http://www.keylimetie.com/Blog/2007/7/24/Some-Design-Principles-To-Consider/</link> 
					<description><![CDATA[
		I came across an interesting set of principles that you might want to keep in mind the next time you set out to design an application, a website, or even improve your daily life. They are The Laws of Simplicity and were conceived by John Maeda, an artist and noted computer scientist from the MIT Media Lab. He compiled them in a short, 100-page book (and posted them on his website as well). I found them in a back issue of Wired magazine, in an article that applied them in a critique some new gadget. I have since found that they increasingly influence my own analysis of UIs and websites, and occassionally use them as the basis for discussions with clients to keep a design session on track.
		The Laws are:
		
				 1. Reduce - The simplest way to achieve simplicity is through thoughtful reduction of functionality.
				 2. Organize - Organization makes a system of many appear fewer.
				 3. Time - Savings in time feel like simplicity.
				 4. Learn - Knowledge makes everything simpler.
				 5. Differences - Simplicity and complexity need each other.
				 6. Context - What lies in the periphery of simplicity is de?nitely not peripheral.
				 7. Emotion - More emotions are better than less.
				 8. Trust - In simplicity we trust.
				 9. Failure - Some things can never be made simple.
				10. The One - Simplicity is about subtracting the obvious, and adding the meaningful.
		
		You can find a more detailed explanation of each law on his site
		 
		
				www.petermorano.com
		
		 
		 
]]></description> 
					<pubDate>Tue, 24 Jul 2007 17:17:11 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2007/7/24/Some-Design-Principles-To-Consider/Default\.aspx</guid>
				</item>
			
				<item>
					<title>Build an iPhone friendly webpage</title> 
					<link>http://www.keylimetie.com/Blog/2007/7/14/Build-an-iPhone-friendly-webpage/</link> 
					<description><![CDATA[
digg_url = "http://digg.com/apple/Build_an_iPhone_friendly_webpage_Sample_code_included";



		

I just got the new iPhone and it's amazing. What you see it doing in the commercials is accurate...and it does a lot more! So right away, I want to know how to implement my own software. Maybe start developing some 3rd party applications. I researched a little and found out no iPhone Software Development Kit (SDK) is available. It seems like Apple is instead telling people to develop applications as webpages. But then you cannot actually interact with the iPhone...and you cannot access the iPhone database (Contacts, Favorites, etc.).I searched a bit more and found the following sample webpage released by Apple:http://developer.apple.com/samplecode/Puzzler/View webpage with your iPhone:http://www.iarchitect.net/Uploads/126/index.htmlNote: When trying to view the webpage in a standard browser (IE, Firefox), it doesn't display much. The weird thing is that if you click "Print Preview", you'll see the game.Description"Puzzler" is a fun and interactive game that illustrates the use of web standards and JavaScript for the iPhone. This application makes advanced usage of mouse-handlers for user-input.To play the game simply double-click or double-tap on any set of 2 or more balls of the same color that are touching. The balls will disappear and any balls above or to the left of the balls you just eliminated will shift into new positions. The goal is to clear all the balls from the screen.ScreenshotsClick any image to see a larger version



  Navigate to iArchitect.net
  Click into this Blog
  Start Game

 



  Tap circles with finger
  All cleared. You win!
]]></description> 
					<pubDate>Sat, 14 Jul 2007 23:21:06 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2007/7/14/Build-an-iPhone-friendly-webpage/Default\.aspx</guid>
				</item>
			
				<item>
					<title>I Forgot The sa Account Password!</title> 
					<link>http://www.keylimetie.com/Blog/2007/7/12/I-Forgot-The-sa-Account-Password/</link> 
					<description><![CDATA[
		At one time or another, we will all find ourselves trying to remember the sa password. Now, thanks to Rodney Landrum's article and the sp_help_revlogin stored procedure, there is an easy way to deal with this.
		You can find his article here
		 
		
				www.petermorano.com
		
]]></description> 
					<pubDate>Thu, 12 Jul 2007 16:47:12 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2007/7/12/I-Forgot-The-sa-Account-Password/Default\.aspx</guid>
				</item>
			
				<item>
					<title>Use Dynamic Connection Strings MDAAB</title> 
					<link>http://www.keylimetie.com/Blog/2007/7/4/Dynamic-Connection-Strings-Microsoft-DAAB/</link> 
					<description><![CDATA[I recently came across a situation where I needed to pass the Microsoft Data Access Application Blocks a dynamic connection string. Out of the box, the DAAB does not support this. Solution: Create a simple method that accepts a connection string and return a Database object. Code Before:Database db = DatabaseFactory.CreateDatabase();Code After:Database db = CustomDatabaseFactory.CreateDatabase(connstring);Class Code:1using System;
2using System.Collections.Generic;
3using System.Data.Common;
4using System.Text;
5using Microsoft.Practices.EnterpriseLibrary.Data;
6namespace Satisfyd.DataAccessLayer
7{
8//This class is used to dynamically set the connection string9//while using the Microsoft Data Application Blocks10publicstaticclass CustomDatabaseFactory
11    {
12staticreadonly DbProviderFactory dbProviderFactory =
13            DbProviderFactories.GetFactory("System.Data.SqlClient");
1415publicstatic Database CreateDatabase(string connectionString)
16        {
17returnnew GenericDatabase(connectionString, dbProviderFactory);
18        }
19    }
20}]]></description> 
					<pubDate>Wed, 04 Jul 2007 16:00:24 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2007/7/4/Dynamic-Connection-Strings-Microsoft-DAAB/Default\.aspx</guid>
				</item>
			
				<item>
					<title>Re-Enable A Disabled SQL Server 2005 Service Broker</title> 
					<link>http://www.keylimetie.com/Blog/2007/6/27/Re-Enable-A-Disabled-SQL-Server-2005-Service-Broker/</link> 
					<description><![CDATA[
		If you are caching data using SQL Cache Dependency with the SqlCacheDependency parameter set to "CommandNotification", and then restore or detach/attach your database (say, during a deployment), you will likely see this error: 
		
				
						"The SQL Server Service Broker for the current database is not enabled, and as a result query notifications are not supported. Please enable the Service Broker for this database if you wish to use notifications." 
				
		
		This is caused by the fact that the service broker is disabled automatically during these operations. To re-enable it, you need to run the following:
		
		
		
				   ALTER DATABASE 
				YOUR_DATABASE 
				SET ENABLE_BROKER
		
		 
		 
		
				www.petermorano.com
		
]]></description> 
					<pubDate>Wed, 27 Jun 2007 23:56:53 GMT</pubDate>
					<guid isPermaLink="false">http://www.keylimetie.com/~/Blog/2007/6/27/Re-Enable-A-Disabled-SQL-Server-2005-Service-Broker/Default\.aspx</guid>
				</item>
			
	</channel>
</rss>