<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6857219</id><updated>2012-01-03T10:07:05.230+01:00</updated><category term='LINQ2Objects'/><category term='Database Connectivity'/><category term='Transact-SQL'/><category term='Visual Studio'/><category term='Mocking'/><category term='MVVM'/><category term='MVC'/><category term='Architecture'/><category term='SQL'/><category term='Soap'/><category term='LINQ2Entities'/><category term='Deployment'/><category term='SQL Server'/><category term='Sandcastle'/><category term='Utils'/><category term='Windows'/><category term='Error Handling'/><category term='ASP.NET MVC'/><category term='ASP.NET'/><category term='Testing'/><category term='Code'/><category term='SMTP'/><category term='TDD'/><category term='VM'/><category term='Sharp Architecture'/><category term='Master Pages'/><category term='Documentation'/><category term='Freeware'/><category term='XForms'/><category term='Mail'/><category term='LINQ'/><category term='EPiServer Manager'/><category term='nHibernate'/><category term='VMWare'/><category term='TFS'/><category term='XML'/><category term='Best Practices'/><category term='OpenSource'/><category term='Disk Tools'/><category term='VPC'/><category term='XPath'/><category term='EPiServer'/><category term='System Tools'/><category term='LINQ2SQL'/><category term='Tools'/><category term='Mobile Phone'/><category term='Common Table Expressions'/><category term='WPF'/><category term='Entity Framework'/><category term='Silverlight'/><title type='text'>Svein Terje's Blog</title><subtitle type='html'>Well.. here it is... my BLOG! Started out being mostly used for dropping bookmarks - links to good sites relating to my current interests. Now even with some code samples and comments about interesting pages.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default?start-index=101&amp;max-results=100'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>258</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6857219.post-1948073685554069878</id><published>2012-01-03T09:14:00.001+01:00</published><updated>2012-01-03T10:07:05.243+01:00</updated><title type='text'>Debugging Windows BSOD (Windows 7)</title><content type='html'>&lt;p&gt;Here are some steps to take if your Windows PC regularly crashes, showing the infamous Blue Screen of Death (BSOD):&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Download and install the “&lt;a href="http://msdn.microsoft.com/en-us/windows/hardware/gg463009"&gt;Debugging Tools for Windows&lt;/a&gt;” x64 or x86 depending on your hardware architecture.  &lt;li&gt;Set path to symbol files. &lt;li&gt;Start WinDbg, and select “Open Crash Dump” from the File menu.  &lt;li&gt;Select the latest crash dump file.  &lt;li&gt;Read the output, at the bottom you will find the likely cause of the crash.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;This is the full story: &lt;a title="http://www.networkworld.com/supp/2011/041811-windows-7-crashes.html?page=1" href="http://www.networkworld.com/supp/2011/041811-windows-7-crashes.html?page=1"&gt;http://www.networkworld.com/supp/2011/041811-windows-7-crashes.html?page=1&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-1948073685554069878?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/1948073685554069878/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2012/01/debugging-windows-bsod-windows-7.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1948073685554069878'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1948073685554069878'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2012/01/debugging-windows-bsod-windows-7.html' title='Debugging Windows BSOD (Windows 7)'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-8882065808103052433</id><published>2011-12-01T08:22:00.001+01:00</published><updated>2011-12-01T08:43:34.436+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Transact-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Synchronizing SQL Server Stored Procedures between databases</title><content type='html'>&lt;p&gt;In my earlier post &lt;a title="Compare Stored Procedures in 2 SQL Server databases" href="http://stgaup.blogspot.com/2011/09/compare-stored-procedures-in-2-sql.html"&gt;Compare Stored Procedures in 2 SQL Server databases&lt;/a&gt;, I wrote about how it is possible to select from INFORMATION_SCHEMA to compare stored procedures.&lt;/p&gt; &lt;p&gt;The issue I am dealing with here is that during the development af a new system, the database stored procedures are likely to change between each release to a server (test, staging or production). You have made all the changes in your development database, and you just need to copy the changes to the other database. My old way to do this was to script each SP whenever it changed and link a section in the delivery slip to the script, which was quite tedious.&lt;/p&gt; &lt;p&gt;What I ended up with using in one of my current projects is the following steps:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Using SQL Server Management Studio, script all procedures from the source database as ALTER to the clipboard.&lt;br&gt;&lt;/li&gt; &lt;li&gt;Connect a new query window to the target database and paste the script.&lt;br&gt;&lt;/li&gt; &lt;li&gt;Run the script.&lt;br&gt;&lt;br&gt;I&lt;em&gt;t will fail for all the SPs that you have added to the source database, which are missing in the target database, but also it will update all existing stored procedures to the latest version.&lt;br&gt;&lt;br&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;Replace all “ALTER PROC” with “CREATE PROC” in the script and run it again.&lt;br&gt;&lt;em&gt;&lt;br&gt;It will fail for all existing SPs in the target database, but more importantly, it will create all the SPs from the source database that are missing in the target database.&lt;br&gt;&lt;br&gt;&lt;/em&gt;&lt;/li&gt; &lt;li&gt;And Bob’s your uncle!&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;This, of course, should be easy to automate. Maybe I’ll come back with an application that does it in an upcoming post.&lt;/p&gt; &lt;p&gt;The routine above works for functions as well, and should/could also work with views, and maybe also tables.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-8882065808103052433?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/8882065808103052433/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2011/12/synchronizing-sql-server-stored.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8882065808103052433'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8882065808103052433'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2011/12/synchronizing-sql-server-stored.html' title='Synchronizing SQL Server Stored Procedures between databases'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-257428615505136187</id><published>2011-09-27T11:46:00.001+02:00</published><updated>2011-09-27T11:47:54.870+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Testing'/><category scheme='http://www.blogger.com/atom/ns#' term='Mail'/><title type='text'>Mailinator.com</title><content type='html'>&lt;p&gt;If you ever need to test a system with lots of different unique email addresses, then &lt;a href="http://www.mailinator.com/"&gt;Mailinator&lt;/a&gt; may be just the thing you need. &lt;/p&gt; &lt;p&gt;Whenever you send an email to some random name @mailinator.com, you can go into the mailinator web site, type the email address (without the &lt;a href="mailto:&amp;ldquo;@mailinator.com"&gt;“@mailinator.com&lt;/a&gt;” part), and log on to check the mail. You don’t even need to register.&lt;/p&gt; &lt;p&gt;Some scenarios may be:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Register users with unique emails&lt;/li&gt; &lt;li&gt;Test confirmation mail functionality&lt;/li&gt; &lt;li&gt;Test forgotten password functionality&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-257428615505136187?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/257428615505136187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2011/09/mailinatorcom.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/257428615505136187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/257428615505136187'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2011/09/mailinatorcom.html' title='Mailinator.com'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-5392168656096034370</id><published>2011-09-15T08:27:00.001+02:00</published><updated>2011-09-15T08:30:59.130+02:00</updated><title type='text'>Adding a ToXmlString() extension method to all objects so that they may be viewed as Xml when debugging</title><content type='html'>&lt;p&gt;Working with soap Request and Response objects I have found that it is a nice thing to be able to check the request, and copy it into SoapUI to test what really is going on. So my first thought was to create an extension method and put it on all my request objects, but it takes some work, so I went for the lazy solution: add extension method on System.Object. Now this may not work on all objects, I think they need to be serializable at least, but it seems to work on my request objects. So here’s my code, just &lt;strong&gt;use it with caution&lt;/strong&gt;, as it may have side effects:&lt;/p&gt; &lt;table border="0" cellspacing="0" cellpadding="2" width="482"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="480"&gt; &lt;p&gt;&lt;font size="2" face="Consolas"&gt;using System;&lt;br&gt;using System.Text;&lt;br&gt;using System.Xml.Serialization;&lt;br&gt;using System.IO;&lt;br&gt;using System.Xml;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Consolas"&gt;public static class ExtensionMethods&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public static string ToXmlString(this System.Object obj) { return serializeObject(obj); }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; private static string serializeObject(object obj)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlSerializer xs = new XmlSerializer(obj.GetType());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StringWriter sw = new StringWriter();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; XmlTextWriter w = new XmlTextWriter(sw);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w.Formatting = Formatting.Indented;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w.Indentation = 3;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; xs.Serialize(w, obj);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w.Flush();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; w.Close();&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font size="2" face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return sw.ToString();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;br&gt;&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="480"&gt;&amp;nbsp;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-5392168656096034370?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/5392168656096034370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2011/09/adding-toxmlstring-extension-method-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5392168656096034370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5392168656096034370'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2011/09/adding-toxmlstring-extension-method-to.html' title='Adding a ToXmlString() extension method to all objects so that they may be viewed as Xml when debugging'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-4912935992477708273</id><published>2011-09-07T16:06:00.001+02:00</published><updated>2011-09-07T16:09:25.413+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Transact-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Compare Stored Procedures in 2 SQL Server databases</title><content type='html'>&lt;p&gt;Using the following script it is possible to get an idea if the stored procedures in two databases are equal.&lt;/p&gt; &lt;p&gt;SELECT A.ROUTINE_NAME, A.ROUTINE_DEFINITION, B.ROUTINE_DEFINITION &lt;br&gt;FROM sourcedatabase.INFORMATION_SCHEMA.ROUTINES A&lt;br&gt;LEFT JOIN targetdatabase.INFORMATION_SCHEMA.ROUTINES B ON A.SPECIFIC_NAME = B.SPECIFIC_NAME&lt;br&gt;WHERE RTRIM(LTRIM(SUBSTRING(A.ROUTINE_DEFINITION,CHARINDEX('CREATE',A.ROUTINE_DEFINITION),999))) &amp;lt;&amp;gt; RTRIM(LTRIM((SUBSTRING(B.ROUTINE_DEFINITION,CHARINDEX('CREATE',B.ROUTINE_DEFINITION,0),999))))&lt;br&gt;ORDER BY ROUTINE_NAME&lt;/p&gt; &lt;p&gt;Even if the routines have the same functionality, they may have some slight differences, like spaces in front of the CREATE PROCEDURE statement and also trailing spaces at the bottom. I have tried to remedy this by trimming and also comparing substrings where initial spaces have been removed. Still room for more improvement, I’m sure, but just a small idea.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-4912935992477708273?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/4912935992477708273/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2011/09/compare-stored-procedures-in-2-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4912935992477708273'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4912935992477708273'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2011/09/compare-stored-procedures-in-2-sql.html' title='Compare Stored Procedures in 2 SQL Server databases'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-2485474322383741292</id><published>2011-05-23T15:40:00.001+02:00</published><updated>2011-05-23T15:40:43.298+02:00</updated><title type='text'>IIS AppPool and ApplicationPoolIdentity</title><content type='html'>&lt;p&gt;When you create a new web site in IIS 7.5, an Application Pool is created by default with the same name as the web site. &lt;/p&gt; &lt;p&gt;After Windows Server 2008 SP2, you may select “ApplicationPoolIdentity” as the account to run the app pool with. &lt;/p&gt; &lt;p&gt;ApplicationPoolIdentity is an account on the local machine with the same name as the Application Pool.&lt;/p&gt; &lt;p&gt;If you want to give your web application access to files or other resources outside your web root directory, perform these steps:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;Right Click the file or folder (or registry key?) you want to give access to, and select Properties from the dropdown.&lt;/li&gt; &lt;li&gt;Go to the Security Tab, click the “Edit…” button.&lt;/li&gt; &lt;li&gt;Click “Add…”.&lt;/li&gt; &lt;li&gt;Click “Locations…” and select the local machine.&lt;/li&gt; &lt;li&gt;Under “Enter the object names to select…”, type &lt;strong&gt;IIS AppPool\&amp;lt;ApplicationPoolIdentity&amp;gt;&lt;/strong&gt;, where &amp;lt;ApplicationPoolIdentity&amp;gt; is the same as the Application Pool name.&lt;/li&gt; &lt;li&gt;Give rights as needed, click OK as many times as it takes, etc.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;I think this should be enough to get you started.&lt;/p&gt; &lt;p&gt;Source: &lt;a title="http://learn.iis.net/page.aspx/624/application-pool-identities/" href="http://learn.iis.net/page.aspx/624/application-pool-identities/"&gt;http://learn.iis.net/page.aspx/624/application-pool-identities/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-2485474322383741292?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/2485474322383741292/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2011/05/iis-apppool-and-applicationpoolidentity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2485474322383741292'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2485474322383741292'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2011/05/iis-apppool-and-applicationpoolidentity.html' title='IIS AppPool and ApplicationPoolIdentity'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-5839488401284444957</id><published>2011-04-15T15:06:00.001+02:00</published><updated>2011-04-15T15:06:12.804+02:00</updated><title type='text'>Setting up Oracle Instantclient Basic</title><content type='html'>&lt;p&gt;I have been working on setting up an oracle instant client basic connection, using the following article:&lt;/p&gt; &lt;p&gt;&lt;a title="http://www.dbatoolz.com/t/installing-oracle-instantclient-basic-and-instantclient-sqlplus-on-win32.html" href="http://www.dbatoolz.com/t/installing-oracle-instantclient-basic-and-instantclient-sqlplus-on-win32.html"&gt;http://www.dbatoolz.com/t/installing-oracle-instantclient-basic-and-instantclient-sqlplus-on-win32.html&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Ran into one problem which took me a little time to figure out. The article says to add an environment variable as a “User Variable”. Since I am running a web site that has an application pool running on the NETWORK SERVICE account, and it is not possible to log on using that account and set the User Variables, they will not be available to my web app.&lt;/p&gt; &lt;p&gt;The solution is to add all variables as System Variables (using the lower part of the Environment variables window).&lt;/p&gt; &lt;p&gt;Just to be safe, I also added a variable for “ORA_HOME” with the same value as the TNS_ADMIN environment variable, namely the path to the instantclient (in my case “instantclient_11_2”) folder.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-5839488401284444957?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/5839488401284444957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2011/04/setting-up-oracle-instantclient-basic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5839488401284444957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5839488401284444957'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2011/04/setting-up-oracle-instantclient-basic.html' title='Setting up Oracle Instantclient Basic'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-4282342844276329185</id><published>2011-04-11T16:26:00.001+02:00</published><updated>2011-04-12T08:38:10.027+02:00</updated><title type='text'>System.Security.Cryptography.CryptographicException: Key not valid for use in specified state</title><content type='html'>&lt;p&gt;I got this message after I created a new user profile on my virtual machine (VMWare), and tried to compile my ORM project (using Telerik OpenAccess ORM). The error was wrapped as: OpenAccess Error: Key not valid for use in specified state.&lt;/p&gt; &lt;p&gt;This is not a problem for OpenAccess only though. I’ve seen that it also may be a problem for other applications, like SQL Server Reporting Services.&lt;/p&gt; &lt;p&gt;The solution:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Go into the folder (Windows XP) at:&lt;br&gt;&amp;lt;drive&amp;gt;:\Documents and Settings\&amp;lt;your windows user account name&amp;gt;\Application Data\Microsoft\Crypto\DSS\&amp;lt;your machine SID&amp;gt;\&lt;/li&gt; &lt;li&gt;Delete the file there. It should have some cryptic name (like a GUID).&lt;/li&gt; &lt;li&gt;Restart IIS (IISRESET).&lt;/li&gt; &lt;li&gt;Recompile. It worked for me.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;&amp;nbsp;&lt;/p&gt; &lt;p&gt;References:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://www.sitefinity.com/devnet/forums/sitefinity-4-x/general-discussions/key-not-valid-for-use-in-specified-state.aspx"&gt;http://www.sitefinity.com/devnet/forums/sitefinity-4-x/general-discussions/key-not-valid-for-use-in-specified-state.aspx&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a title="http://www.willasrari.com/blog/key-not-valid-for-use-in-specified-state/000151.aspx" href="http://www.willasrari.com/blog/key-not-valid-for-use-in-specified-state/000151.aspx"&gt;http://www.willasrari.com/blog/key-not-valid-for-use-in-specified-state/000151.aspx&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-4282342844276329185?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/4282342844276329185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2011/04/openaccess-key-not-valid-for-use-in.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4282342844276329185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4282342844276329185'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2011/04/openaccess-key-not-valid-for-use-in.html' title='System.Security.Cryptography.CryptographicException: Key not valid for use in specified state'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-2870299809448127901</id><published>2011-03-29T09:55:00.001+02:00</published><updated>2011-03-29T09:55:10.104+02:00</updated><title type='text'>My experiences from installing EPiServer CMS 5 on Windows XP</title><content type='html'>&lt;p&gt;Installing EPiServer CMS 5 on a Windows XP developer VM turned out to be a bit of hazzle, maybe because XP is not a “supported” OS any more?&lt;/p&gt; &lt;p&gt;Ok, so first installed the EPiServer CMS5 5.2 R2 application files to the default location. No problem so far.&lt;/p&gt; &lt;p&gt;Since I am working on an existing web site, I created a folder on disk and got latest version from TFS.&lt;/p&gt; &lt;p&gt;I then copied the EPiServer binaries into my bin-folder (XCOPY-deployment), and attempted to browse the website. I got this message:&lt;/p&gt; &lt;p&gt;Could not load type 'EPiServer.UI.WebControls.ControlAdapters.HtmlHeadAdapter'.&lt;/p&gt; &lt;p&gt;This error message originated from the App_Browsers / AdapterMappings.browser file.&lt;/p&gt; &lt;p&gt;I then went into my web.config file and verified that my VPP paths were mapped correctly to files in the Program Files\EPiServer\CMS\5.2.375.236\Application folder.&lt;/p&gt; &lt;p&gt;So my next thought was to open the edit/admin mode. Alas, it looked all messed up, missing both styles and graphics.&lt;/p&gt; &lt;p&gt;This gave me my next clue, because in EPiServer 4.x you had to remap the 404 http error status to /utils/NotFound.aspx to make the admin/edit modes look as they should, as I described in my previous posting: &lt;a title="http://stgaup.blogspot.com/2009/10/styles-missing-in-episerver-editadmin.html" href="http://stgaup.blogspot.com/2009/10/styles-missing-in-episerver-editadmin.html"&gt;http://stgaup.blogspot.com/2009/10/styles-missing-in-episerver-editadmin.html&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;That trick does not seem to work on CMS 5 (only works on EPiServer 4.x). Now in stead you need to do something a bit different:&lt;/p&gt; &lt;ol&gt; &lt;li&gt;Open the “Properties” for your web site in the IIS manager.&lt;/li&gt; &lt;li&gt;On the “Home Directory” tab, click the “Configuration…” button.&lt;/li&gt; &lt;li&gt;On the “Mappings” tab, click the “Add” button.&lt;/li&gt; &lt;li&gt;Click the “Browse” button next to the “Executable” text box.&lt;/li&gt; &lt;li&gt;Navigate to the Windows/Microsoft.NET/Framework/v2.0.50727 folder.&lt;/li&gt; &lt;li&gt;Select “Dynamic Link Libraries” in the “Files of type” dropdown.&lt;/li&gt; &lt;li&gt;Select the “aspnet_isapi.dll” file, and click the “Open” button.&lt;/li&gt; &lt;li&gt;Fill in the “Extension” as “.*” (dot-star).&lt;/li&gt; &lt;li&gt;&lt;strong&gt;TRICK:&lt;/strong&gt; There’s a bug in Windows XP that has never been fixed, that causes the “OK” button to remain disabled. Click in the “Executable” text box again and then voila, the “OK” button is enabled.&lt;/li&gt; &lt;li&gt;Click OK as many times as it takes to get back to the “Internet Information Services” application.&lt;/li&gt;&lt;/ol&gt; &lt;p&gt;Now try to reload your admin/edit mode. It should work.&lt;/p&gt; &lt;p&gt;Some good links:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;&lt;a href="http://labs.dropit.se/blogs/post/2010/01/10/Checklist-for-deploying-EPiServer-sites.aspx"&gt;Dropit blog – Checklist for deploying EPiServer Sites&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://world.episerver.com/en/Documentation/Items/Installation-Instructions/EPiServer-CMS/EPiServer-CMS-5-R2-Installation-Instructions/"&gt;EPiServer CMS 5 R2 Installation Instructions&lt;/a&gt;&lt;/li&gt; &lt;li&gt;&lt;a href="http://support.microsoft.com/?id=317948"&gt;IIS 5.1 OK button unavailable when you add application mappings&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-2870299809448127901?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/2870299809448127901/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2011/03/my-experiences-from-installing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2870299809448127901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2870299809448127901'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2011/03/my-experiences-from-installing.html' title='My experiences from installing EPiServer CMS 5 on Windows XP'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-1081002933953629352</id><published>2011-03-04T12:50:00.001+01:00</published><updated>2011-03-04T12:58:20.185+01:00</updated><title type='text'>Themed CheckBox check mark</title><content type='html'>&lt;p&gt;Themes for ASP.NET applications came probably in 2005 with .NET 2.0, so it’s been around for a while.&lt;/p&gt; &lt;p&gt;I am creating different themes to adapt my web appliction to different clients.&lt;/p&gt; &lt;p&gt;So the problem I came across with the ASP CheckBox control is that setting the size of the control does not change the size of the check mark. Neither does it have any properties for setting the size.&lt;/p&gt; &lt;p&gt;Also, I want to be able to theme my control, so the control needs to have some kind of property that could be set in the skin file, and there is no such property on the standard asp CheckBox. It does have a method for setting properties on the inner input control, however, but as I said, I need a property.&lt;/p&gt; &lt;p&gt;The CheckBox control is rendered inside a span tag, like this:&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="517"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="515"&gt;&lt;font size="2" face="Consolas"&gt;&amp;lt;span class="checkbox"&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;input id="ContentPlaceHolder1_chkPersistLogin"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type="checkbox" &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name="ctl00$ContentPlaceHolder1$chkPersistLogin" /&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;label for="ContentPlaceHolder1_chkPersistLogin"&amp;gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;Remember me&amp;lt;/label&amp;gt;&lt;br&gt;&amp;lt;/span&amp;gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Now, as you can see, if you set the CssClass property of the control to something, then it will be applied to the span, not to the inner controls directly.&lt;/p&gt; &lt;p&gt;So, as I mentioned, the CheckBox control does have a way of accessing the inner input control. It is by using the InputAttributes propertys methods. For example, the following code will add a “class” attribute to the &amp;lt;input type=”checkbox” /&amp;gt; tag:&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="512"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="510"&gt;&lt;font face="Consolas"&gt;MyCheckBox.InputAttributes.Add("class", “MyCheckBoxCssClass”);&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;If I want to set the class on my inner input control, then I could create my own custom control that inherits from the asp CheckBox control. Here’s my CheckBoxPlus class:&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="512"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="510"&gt; &lt;p&gt;&lt;font face="Consolas"&gt;using System;&lt;br&gt;using System.Web;&lt;br&gt;using System.Web.UI.WebControls;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Consolas"&gt;namespace MyWebApp.WebUI.Common.CustomControls&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; public class CheckBoxPlus : CheckBox&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; private string _inputCssClass;&lt;/font&gt;&lt;/p&gt; &lt;p&gt;&lt;font face="Consolas"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; public string InputCssClass&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; get { return _inputCssClass; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _inputCssClass = value;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.InputAttributes.Add("class", _inputCssClass);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;/font&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;To be able to use my custom control in a page, I need to add a directive to the web forms where I want to use it:&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="515"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="513"&gt;&lt;font face="Consolas"&gt;&amp;lt;%@ Register TagPrefix="custom" Assembly="MyWebApp.WebUI" Namespace="MyWebApp.WebUI.Common.CustomControls" %&amp;gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;Now I can use the control im my page, and set the new property:&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="514"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="512"&gt;&lt;font face="Consolas"&gt;&amp;lt;custom:CheckBoxPlus ID="chkPersistLogin" runat="server" Text="Remember me" CssClass="checkbox" /&amp;gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;The last part is to enable theming/skins for the control. The only thing you need to do is to add the same Register directive at the top of the skin file, and then you can create a template for you control in the usual way. Here’s an example skin file:&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="512"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="510"&gt;&lt;font face="Consolas"&gt;&lt;font style="background-color: #ffff00"&gt;&amp;lt;%@ Register TagPrefix="cd" Assembly="MyWebApp.WebUI" Namespace="MyWebApp.WebUI.Common.CustomControls" %&amp;gt;&lt;br&gt;&lt;/font&gt;&amp;lt;asp:Button runat="server" /&amp;gt;&lt;br&gt;&amp;lt;asp:TextBox runat="server" /&amp;gt;&lt;br&gt;&amp;lt;asp:Label runat="server" /&amp;gt;&lt;br&gt;&amp;lt;asp:Panel runat="server" HorizontalAlign="Center" /&amp;gt;&lt;br&gt;&lt;font style="background-color: #ffff00"&gt;&amp;lt;cd:CheckBoxPlus InputCssClass="checkboxplus" runat="server" /&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;When I load my page now, the rendered HTML looks like this:&lt;/p&gt; &lt;table border="1" cellspacing="0" cellpadding="2" width="512"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="510"&gt;&lt;font face="Consolas"&gt;&amp;lt;span class="checkbox"&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;input id="ContentPlaceHolder1_chkPersistLogin" &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; type="checkbox" &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; name="ctl00$ContentPlaceHolder1$chkPersistLogin"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font style="background-color: #ffff00"&gt;class="checkboxplus"&lt;/font&gt; /&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;label for="ContentPlaceHolder1_chkPersistLogin"&amp;gt;Remember me&amp;lt;/label&amp;gt;&lt;br&gt;&amp;lt;/span&amp;gt;&lt;/font&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;As you can see, the theme sets the InputCssClass, and thus I am able to control the size of the check mark of the CheckBox control.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-1081002933953629352?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/1081002933953629352/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2011/03/themed-checkbox-check-mark.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1081002933953629352'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1081002933953629352'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2011/03/themed-checkbox-check-mark.html' title='Themed CheckBox check mark'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-8316355502475652805</id><published>2011-02-11T11:01:00.001+01:00</published><updated>2011-02-11T12:54:25.949+01:00</updated><title type='text'>Installing Windows Phone 7 CTP on Windows XP</title><content type='html'>&lt;p&gt;Source: &lt;a title="http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/6657c1ff-45a6-466a-b20d-f5640e3f0c1f/" href="http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/6657c1ff-45a6-466a-b20d-f5640e3f0c1f/"&gt;http://social.msdn.microsoft.com/Forums/en-US/windowsphone7series/thread/6657c1ff-45a6-466a-b20d-f5640e3f0c1f/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Thanks to &lt;a href="http://orand.blogspot.com/"&gt;Oran Dennison&lt;/a&gt; for this solution.&lt;/p&gt;  &lt;p&gt;Please be awear that Microsoft does not support running the Windows Phone 7 CTP Tools on Windows XP. I found this solution, and I am using it at my own risk, as should you.&lt;/p&gt;  &lt;p&gt;Workaround for installing Windows Phone 7 CTP on Windows XP: &lt;/p&gt;  &lt;p&gt;1.Download the Windows Phone Developer Tools CTP Refresh from here: &lt;a title="developer.windowsphone.com" href="http://developer.windowsphone.com/"&gt;developer.windowsphone.com&lt;/a&gt;&amp;#160; &lt;br /&gt;2.Extract the contents of the setup package by running vm_web.exe /x and choosing a path to extract to     &lt;br /&gt;3.Go to the folder you extracted to in step 2 and open the file baseline.dat in notepad     &lt;br /&gt;4.Look for the section named [gencomp7788]     &lt;br /&gt;5.Change the value InstallOnLHS from 1 to 0     &lt;br /&gt;6.Change the value InstallOnWinXP from 1 to 0     &lt;br /&gt;7.Save and close baseline.dat     &lt;br /&gt;8.Run setup.exe /web from the folder you extracted to in step 2 &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-8316355502475652805?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/8316355502475652805/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2011/02/installing-windows-phone-7-ctp-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8316355502475652805'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8316355502475652805'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2011/02/installing-windows-phone-7-ctp-on.html' title='Installing Windows Phone 7 CTP on Windows XP'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-4234647027543210202</id><published>2011-01-14T16:20:00.001+01:00</published><updated>2011-01-14T16:32:55.678+01:00</updated><title type='text'>Windows x64 knowledge</title><content type='html'>&lt;p&gt;I have learned about Windows 64-bit:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;On a 64-bit Windows machine, there are two different locations for programs to be installed:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;Programs&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;For 64-bit programs&lt;/li&gt;     &lt;/ul&gt;      &lt;li&gt;Programs (x86)&lt;/li&gt;      &lt;ul&gt;       &lt;li&gt;For 32-bit programs&lt;/li&gt;     &lt;/ul&gt;   &lt;/ul&gt;    &lt;li&gt;There are two different ODBC managers:&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;the 64-bit version is accessed from Control Panel / Administrative Tools&lt;/li&gt;      &lt;li&gt;the 32-bit version may be found under [SysDrive]:\Windows\SysWOW64&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;Oracle 10g had a problem with the parentheses in the “Programs (x86)” folder name, for which there were released a patch.&lt;/li&gt;    &lt;li&gt;The BI Development Studio (VS2008) which comes with SQL Server 2008 is 32-bit, and does not have easy access to 64-bit drivers. This goes also for the SSIS Package Designer.&lt;/li&gt;    &lt;ul&gt;     &lt;li&gt;If you build for “Any CPU” it might still work.&lt;/li&gt;      &lt;li&gt;Or you could install both, and define ODBC connections with the same names using both of the ODBC managers.&lt;/li&gt;   &lt;/ul&gt;    &lt;li&gt;(more info coming soon…. maybe)&lt;/li&gt; &lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-4234647027543210202?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/4234647027543210202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2011/01/windows-x64-knowledge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4234647027543210202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4234647027543210202'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2011/01/windows-x64-knowledge.html' title='Windows x64 knowledge'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-4873265694293085301</id><published>2011-01-14T13:16:00.001+01:00</published><updated>2011-01-14T13:16:31.837+01:00</updated><title type='text'>64-bit Windows 2008 vs Oracle x64</title><content type='html'>&lt;p&gt;Ok, so finally after exploring several ways to run a query on Oracle x64, I have succeeded.&lt;/p&gt;  &lt;p&gt;First step is to install a 64-bit Oracle Client on the W2k8 server. For me it works with the Oracle 11g InstantClient v. 11.2, connecting to an Oracle 10.x.. database.&lt;/p&gt;  &lt;p&gt;I am using a 32-bit developer machine, using the System.Data.OracleClient classes, and everything seems to work.&lt;/p&gt;  &lt;p&gt;My connection string is like this:   &lt;br /&gt;&amp;lt;connectionStrings&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;add name=”oracle”&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; connectionString=”Data Source=TNSNAME;UserId=uid;Password=pwd;” /&amp;gt;    &lt;br /&gt;&amp;lt;/connectionStrings&amp;gt;&lt;/p&gt;  &lt;p&gt;So everything works nicely, until I move my compiled code to the x64 server.   &lt;br /&gt;I now get this error:&lt;/p&gt;  &lt;p&gt;Attempt to load Oracle client libraries threw BadImageFormatException.&amp;#160; This problem will occur when running in 64 bit mode with the 32 bit Oracle client components installed. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;    &lt;br /&gt;Before compiling, go into the project properties and set the “Platform target” property to “Any CPU”.    &lt;br /&gt;Compile, then copy your assemblies to the server. Looks like an extra DLL-file has been added to my bin-folder (Oracle.DataAccess.dll).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-4873265694293085301?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/4873265694293085301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2011/01/64-bit-windows-2008-vs-oracle-x64.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4873265694293085301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4873265694293085301'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2011/01/64-bit-windows-2008-vs-oracle-x64.html' title='64-bit Windows 2008 vs Oracle x64'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-9205779397390679310</id><published>2010-12-16T15:35:00.001+01:00</published><updated>2010-12-16T15:37:41.447+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Soap'/><category scheme='http://www.blogger.com/atom/ns#' term='Error Handling'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>SoapExceptionWrapper</title><content type='html'>&lt;p&gt;I wrote this code quite a while ago, but since it’s quite reusable (and very simple) here it is:&lt;/p&gt;  &lt;p&gt;using System;   &lt;br /&gt;using System.Collections.Generic;    &lt;br /&gt;using System.Text;    &lt;br /&gt;using System.Web.Services.Protocols;    &lt;br /&gt;using System.Xml; &lt;/p&gt;  &lt;p&gt;namespace SupportLibrary.ExceptionHandling   &lt;br /&gt;{ &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;summary&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// Wrapper Class for Soap Exception from JBoss.     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// Parses the XML in the Detail XML Node, exposing StatusCode and StatusDescription as properties.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;example&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// int errorCode = -1;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// try    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ///&amp;#160;&amp;#160;&amp;#160;&amp;#160; WebService.DoSomething();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// catch(SoapException soapex)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ///&amp;#160;&amp;#160;&amp;#160;&amp;#160; SoapExceptionWrapper wrapper = new SoapExceptionWrapper(soapex);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ///&amp;#160;&amp;#160;&amp;#160;&amp;#160; int errorCode = wrapper.StatusCode;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ///&amp;#160;&amp;#160;&amp;#160;&amp;#160; string errorDescription = wrapper.StatusDescription;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// }&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/example&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public class SoapExceptionWrapper    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private SoapException _ex; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;summary&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// The XmlNode containing the Detail information about the error.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public XmlNode DetailXml    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return _ex.Detail.FirstChild;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;summary&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// Status code from SoapException Detail XML.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public int StatusCode    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string codeStr = &amp;quot;-1&amp;quot;;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(DetailXml != null &amp;amp;&amp;amp; DetailXml.ChildNodes.Count &amp;gt; 0)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; codeStr = DetailXml.SelectSingleNode(&amp;quot;StatusCode&amp;quot;).InnerText;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int codeInt = -1;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; int.TryParse(codeStr, out codeInt);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return codeInt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;summary&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// Status description from SoapException Detail XML.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public string StatusDescription    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (DetailXml != null &amp;amp;&amp;amp; DetailXml.ChildNodes.Count &amp;gt; 0 &amp;amp;&amp;amp; DetailXml.SelectSingleNode(&amp;quot;StatusDescription&amp;quot;) != null &amp;amp;&amp;amp; DetailXml.SelectSingleNode(&amp;quot;StatusDescription&amp;quot;).InnerText != &amp;quot;&amp;quot;)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return DetailXml.SelectSingleNode(&amp;quot;StatusDescription&amp;quot;).InnerText;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return _ex.Message;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;summary&amp;gt;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// Constructor using default values.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;param name=&amp;quot;soapex&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public SoapExceptionWrapper(SoapException soapex)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; _ex = soapex;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-9205779397390679310?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/9205779397390679310/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/12/soapexceptionwrapper.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/9205779397390679310'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/9205779397390679310'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/12/soapexceptionwrapper.html' title='SoapExceptionWrapper'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-575031884679539728</id><published>2010-09-27T11:20:00.001+02:00</published><updated>2010-09-27T11:20:16.858+02:00</updated><title type='text'>Generic cache manager</title><content type='html'>&lt;p&gt;The following class is a generic cache manager. It requires a reference to System.Web.&lt;/p&gt;  &lt;p&gt;public static class CacheManager   &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public static T GetObject&amp;lt;T&amp;gt;(string key)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (System.Web.HttpRuntime.Cache.Get(key) != null) return (T)System.Web.HttpRuntime.Cache.Get(key);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return default(T);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public static void AddObject&amp;lt;T&amp;gt;(T customObject, string key, TimeSpan duration)   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (System.Web.HttpRuntime.Cache.Get(key) == null)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.Web.HttpRuntime.Cache.Insert(key, customObject, null, System.Web.Caching.Cache.NoAbsoluteExpiration, duration);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-575031884679539728?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/575031884679539728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/09/generic-cache-manager.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/575031884679539728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/575031884679539728'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/09/generic-cache-manager.html' title='Generic cache manager'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-484951265359400008</id><published>2010-09-23T16:49:00.001+02:00</published><updated>2010-09-23T16:49:51.927+02:00</updated><title type='text'>SQL Server 2008: No connection could be made because the target machine actively refused it</title><content type='html'>&lt;p&gt;An old problem which still causes me some trouble now and again.&lt;/p&gt;  &lt;p&gt;So I got the following error:&lt;/p&gt;  &lt;p&gt;No connection could be made because the target machine actively refused it. Microsoft SQL Server Error 10061&lt;/p&gt;  &lt;p&gt;So first thing to check is wether or not the server is set up to accept remote connections.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open up SQL Server Management Studio (SSMS).&lt;/li&gt;    &lt;li&gt;Right-click on the server instance, select Properties…&lt;/li&gt;    &lt;li&gt;Click on the “Connections” option on the left side.&lt;/li&gt;    &lt;li&gt;Verify that the “Allow remote connections to this server” option is checked.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;If it was not enabled, you might try to restart the sql server service by running “NET STOP mssqlserver” and “NET START mssqlserver” in a command window. You need to restart the service for any configuration changes to take effect.&lt;/p&gt;  &lt;p&gt;Second thing you might check is if the server has enabled TCP/IP.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open SQL Server Configuration Manager.&lt;/li&gt;    &lt;li&gt;Expand the SQL Server Network Configuration node.&lt;/li&gt;    &lt;li&gt;Make sure that TCP/IP is enabled.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Remember again that you must restart Sql Server for changes to be effective.&lt;/p&gt;  &lt;p&gt;Final thing is to go into the Surface Area configuration and enable the functionality you need. This used to be a separate configuration tool in SQL Server 2005, but now it is integrated into SSMS.&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open up SQL Server Management Studio (SSMS).&lt;/li&gt;    &lt;li&gt;Right-click on the server instance, select Facets…&lt;/li&gt;    &lt;li&gt;Select the “Surface Area Configuration” facet from the dropdown at the top.&lt;/li&gt;    &lt;li&gt;You may at least want to set the “AdHocRemoteQueriesEnabled” to true, and maybe some of the other options as well.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Remember to restart SQL Server.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-484951265359400008?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/484951265359400008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/09/sql-server-2008-no-connection-could-be.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/484951265359400008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/484951265359400008'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/09/sql-server-2008-no-connection-could-be.html' title='SQL Server 2008: No connection could be made because the target machine actively refused it'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-8413731236681396902</id><published>2010-09-13T16:10:00.001+02:00</published><updated>2010-09-14T10:34:20.996+02:00</updated><title type='text'>Pregnancy Ticker Screen Saver</title><content type='html'>&lt;p&gt;I have created a HTML page to be used with the HTML Screen Saver from &lt;a title="http://myweb.tiscali.co.uk/djmclean/htmlscreensaver.html" href="http://myweb.tiscali.co.uk/djmclean/htmlscreensaver.html"&gt;http://myweb.tiscali.co.uk/djmclean/htmlscreensaver.html&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;The actual screen saver must first be installed from the link above.&lt;/p&gt;  &lt;p&gt;After it has been installed, create a HTML Page and paste the following markup into it, and then save it somewhere (preferably in a dedicated new directory).&lt;/p&gt;  &lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/a&gt;&amp;gt;     &lt;br /&gt;&amp;lt;html xmlns=&amp;quot;&lt;a href="http://www.w3.org/1999/xhtml&amp;quot;"&gt;http://www.w3.org/1999/xhtml&amp;quot;&lt;/a&gt;&amp;gt;     &lt;br /&gt;&amp;lt;head&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;     &lt;br /&gt;&amp;lt;/head&amp;gt;     &lt;br /&gt;&amp;lt;body bgcolor=&amp;quot;#0080C0&amp;quot; topmargin=&amp;quot;0&amp;quot; leftmargin=&amp;quot;0&amp;quot; rightmargin=&amp;quot;0&amp;quot; bottommargin=&amp;quot;0&amp;quot; scroll=&amp;quot;no&amp;quot;&amp;gt;     &lt;br /&gt;&amp;lt;div id=&amp;quot;tickerDiv&amp;quot; style=&amp;quot;width:1600px;height:1000px; background-image:url('scrback.jpg'); background-repeat: no-repeat; background-position:center center; border-width: 0; margin: 0 0 0 0;&amp;quot; &amp;gt;     &lt;br /&gt;&amp;lt;table id=&amp;quot;kwsTickerLayoutTable&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;2&amp;quot; cellpadding=&amp;quot;1&amp;quot; style=&amp;quot;background-color:#FFEEFF;text-align:left;position:absolute;&amp;quot;&amp;gt;     &lt;br /&gt;&amp;lt;tr&amp;gt;&amp;lt;td rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:green;&amp;quot;&amp;gt;&amp;lt;a id=&amp;quot;kwsTickerCountdownUrl&amp;quot; href=&amp;quot;&amp;quot; style=&amp;quot;border:0;&amp;quot;&amp;gt;&amp;lt;img id=&amp;quot;kwsTickerCountdownImage&amp;quot; width=&amp;quot;100px&amp;quot; alt=&amp;quot;&amp;quot; src=&amp;quot;&amp;quot; style=&amp;quot;border: 1px solid #EEDDEE;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;font-style:normal; font-family: Arial; font-size: x-large; font-weight: bold; font-variant: normal; color: #008080;&amp;quot;&amp;gt;&amp;lt;label id=&amp;quot;kwsTickerCountdownText1&amp;quot;&amp;gt;test&amp;lt;/label&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;     &lt;br /&gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-style:normal; font-family: Arial; font-size: x-large; font-weight: bold; font-variant: normal; color: #008080;&amp;quot;&amp;gt;&amp;lt;label id=&amp;quot;kwsTickerCountdownText2&amp;quot;&amp;gt;test&amp;lt;/label&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;     &lt;br /&gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-style:normal; font-family: Arial; font-size: x-large; font-weight: bold; font-variant: normal; color: #008080;&amp;quot;&amp;gt;&amp;lt;label id=&amp;quot;kwsTickerCountdownText3&amp;quot;&amp;gt;test&amp;lt;/label&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;     &lt;br /&gt;&amp;lt;/table&amp;gt;     &lt;br /&gt;&amp;lt;/div&amp;gt;     &lt;br /&gt;&amp;lt;/body&amp;gt;     &lt;br /&gt;&amp;lt;script language=&amp;quot;javascript&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var now = new Date(); //today     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var dob = new Date(2011, 2, 9); //date of birth     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var doc = new Date(2010, 5, 1); //start date of pregnancy     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var one_day = 1000 * 60 * 60 * 24; //milliseconds in one day     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var days_total = Math.ceil((dob.getTime() - now.getTime()) / (one_day)); //number of days left     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var weeks = Math.floor(days_total / 7); //number of weeks left     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var days = days_total % 7; //number of days in addition to the weeks left     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var days_gone_total = Math.ceil((now.getTime() - doc.getTime()) / one_day); //number of days gone     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var weeks_gone = Math.floor(days_gone_total / 7); //number of weeks gone     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var days_gone = days_gone_total % 7; //number of days in addition to the weeks gone     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var lab1 = document.getElementById('kwsTickerCountdownText1'); //get label 1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var lab2 = document.getElementById('kwsTickerCountdownText2'); //get label 2     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var lab3 = document.getElementById('kwsTickerCountdownText3'); //get label 3     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var img = document.getElementById('kwsTickerCountdownImage'); //get image element     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var url = document.getElementById('kwsTickerCountdownUrl'); // get url element of image element     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; lab1.innerHTML = (weeks_gone + 1) + 'th week';     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (days_gone &amp;gt; 0) { lab2.innerHTML = weeks_gone + ' weeks and ' + days_gone + ' days on the way.'; } else { lab2.innerHTML = weeks_gone + ' weeks on the way.'; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (days &amp;gt; 0) { lab3.innerHTML = 'Only ' + weeks + ' weeks and ' + days + ' days left!'; } else { lab3.innerHTML = 'Only ' + weeks + ' weeks left!'; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; img.setAttribute('src', '&lt;a href="http://images.3dpregnancy.com/en/2D/200/'"&gt;http://images.3dpregnancy.com/en/2D/200/'&lt;/a&gt; + weeks_gone + '-weeks-pregnant.jpg');     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; url.setAttribute('href', '&lt;a href="http://3dpregnancy.parentsconnect.com/calendar/'"&gt;http://3dpregnancy.parentsconnect.com/calendar/'&lt;/a&gt; + weeks_gone + '-weeks-pregnant.html'); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; var tickerDiv = document.getElementById('tickerDiv');    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; tickerDiv.style.width = screen.width;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; tickerDiv.style.height = screen.height; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; window.setTimeout(&amp;quot;Tick()&amp;quot;, 500, &amp;quot;javascript&amp;quot;);    &lt;br /&gt;&amp;lt;/script&amp;gt;     &lt;br /&gt;&amp;lt;script language=&amp;quot;javascript&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; function Tick() {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var tabl = document.getElementById('kwsTickerLayoutTable');     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var x = Math.floor(Math.random() * (screen.width - tabl.offsetWidth)) + 'px';     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tabl.style.left = x;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var y = Math.floor(Math.random() * (screen.height - tabl.offsetHeight)) + 'px';     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; tabl.style.top = y;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; window.setTimeout(&amp;quot;Tick()&amp;quot;, 2000, &amp;quot;javascript&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;lt;/script&amp;gt;     &lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;  &lt;p&gt;If you want to have a background image, save a JPG-file called “scrback.jpg” into the same directory. If you don’t want a background image (if you are concerned about burn-in etc.), you may need to remove the following text: background-image:url('scrback.jpg') from the markup above.&lt;/p&gt;  &lt;p&gt;Lastly, go into the screen saver options on your computer and configure the HTML file you created as the one you want your HTML screen saver to use.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-8413731236681396902?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/8413731236681396902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/09/pregnancy-ticker-screen-saver.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8413731236681396902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8413731236681396902'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/09/pregnancy-ticker-screen-saver.html' title='Pregnancy Ticker Screen Saver'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-6582307415127842530</id><published>2010-09-13T10:34:00.001+02:00</published><updated>2010-09-13T11:04:23.250+02:00</updated><title type='text'>Pregnancy ticker</title><content type='html'>&lt;p&gt;The following HTML is a pregnancy ticker. The HTML fetches an image from &lt;a href="http://www.3dpregnancyticker.com"&gt;http://www.3dpregnancyticker.com&lt;/a&gt;. Click on the image to go to the web site. To put in your own due date you will need to change the values for the “dob” and “doc” variables. It may be used as a desktop item on Windows. I have also used it on a HTML Screen Saver.&lt;/p&gt;  &lt;p&gt;&amp;lt;!DOCTYPE html PUBLIC &amp;quot;-//W3C//DTD XHTML 1.0 Transitional//EN&amp;quot; &amp;quot;&lt;a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;"&gt;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/a&gt;&amp;gt;    &lt;br /&gt;&amp;lt;html xmlns=&amp;quot;&lt;a href="http://www.w3.org/1999/xhtml&amp;quot;"&gt;http://www.w3.org/1999/xhtml&amp;quot;&lt;/a&gt;&amp;gt;    &lt;br /&gt;&amp;lt;head&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;title&amp;gt;&amp;lt;/title&amp;gt;    &lt;br /&gt;&amp;lt;/head&amp;gt;    &lt;br /&gt;&amp;lt;body&amp;gt;    &lt;br /&gt;&amp;lt;div style=&amp;quot;height:100%;width:100%;vertical-align:middle;text-align:center;background-color:MidnightBlue;&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt;table id=&amp;quot;kwsTickerLayoutTable&amp;quot; border=&amp;quot;0&amp;quot; cellspacing=&amp;quot;2&amp;quot; cellpadding=&amp;quot;1&amp;quot; style=&amp;quot;background-color:#FFEEFF;text-align:left;&amp;quot;&amp;gt;    &lt;br /&gt;&amp;lt;tr&amp;gt;&amp;lt;td rowspan=&amp;quot;3&amp;quot; style=&amp;quot;background-color:green;&amp;quot;&amp;gt;&amp;lt;a id=&amp;quot;kwsTickerCountdownUrl&amp;quot; href=&amp;quot;&amp;quot; style=&amp;quot;border:0;&amp;quot;&amp;gt;&amp;lt;img id=&amp;quot;kwsTickerCountdownImage&amp;quot; width=&amp;quot;100px&amp;quot; alt=&amp;quot;&amp;quot; src=&amp;quot;&amp;quot; style=&amp;quot;border: 1px solid #EEDDEE;&amp;quot; /&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;td style=&amp;quot;font-style:normal; font-family: Arial; font-size: x-large; font-weight: bold; font-variant: normal; color: #008080;&amp;quot;&amp;gt;&amp;lt;label id=&amp;quot;kwsTickerCountdownText1&amp;quot;&amp;gt;test&amp;lt;/label&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;    &lt;br /&gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-style:normal; font-family: Arial; font-size: x-large; font-weight: bold; font-variant: normal; color: #008080;&amp;quot;&amp;gt;&amp;lt;label id=&amp;quot;kwsTickerCountdownText2&amp;quot;&amp;gt;test&amp;lt;/label&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;    &lt;br /&gt;&amp;lt;tr&amp;gt;&amp;lt;td style=&amp;quot;font-style:normal; font-family: Arial; font-size: x-large; font-weight: bold; font-variant: normal; color: #008080;&amp;quot;&amp;gt;&amp;lt;label id=&amp;quot;kwsTickerCountdownText3&amp;quot;&amp;gt;test&amp;lt;/label&amp;gt;&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;    &lt;br /&gt;&amp;lt;/table&amp;gt;    &lt;br /&gt;&amp;lt;/div&amp;gt;    &lt;br /&gt;&amp;lt;/body&amp;gt;    &lt;br /&gt;&amp;lt;script language=&amp;quot;javascript&amp;quot; type=&amp;quot;text/javascript&amp;quot;&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var now = new Date(); //today    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var dob = new Date(2011, 2, 9); //date of birth    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var doc = new Date(2010, 5, 1); //start date of pregnancy    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var one_day = 1000 * 60 * 60 * 24; //milliseconds in one day    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var days_total = Math.ceil((dob.getTime() - now.getTime()) / (one_day)); //number of days left    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var weeks = Math.floor(days_total / 7); //number of weeks left    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var days = days_total % 7; //number of days in addition to the weeks left    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var days_gone_total = Math.ceil((now.getTime() - doc.getTime()) / one_day); //number of days gone    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var weeks_gone = Math.floor(days_gone_total / 7); //number of weeks gone    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var days_gone = days_gone_total % 7; //number of days in addition to the weeks gone    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var lab1 = document.getElementById('kwsTickerCountdownText1'); //get label 1    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var lab2 = document.getElementById('kwsTickerCountdownText2'); //get label 2    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var lab3 = document.getElementById('kwsTickerCountdownText3'); //get label 3    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var img = document.getElementById('kwsTickerCountdownImage'); //get image element    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var url = document.getElementById('kwsTickerCountdownUrl'); // get url element of image element    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; lab1.innerHTML = (weeks_gone + 1) + 'th week';    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; lab2.innerHTML = weeks_gone + ' weeks and ' + days_gone + ' days on the way.';    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; if (days &amp;gt; 0) { lab3.innerHTML = 'Only ' + weeks + ' weeks and ' + days + ' days left!'; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; else { lab3.innerHTML = 'Only ' + weeks + ' weeks left!'; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; img.setAttribute('src', '&lt;a href="http://images.3dpregnancy.com/en/2D/200/'"&gt;http://images.3dpregnancy.com/en/2D/200/'&lt;/a&gt; + weeks_gone + '-weeks-pregnant.jpg');    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; url.setAttribute('href', '&lt;a href="http://3dpregnancy.parentsconnect.com/calendar/'"&gt;http://3dpregnancy.parentsconnect.com/calendar/'&lt;/a&gt; + weeks_gone + '-weeks-pregnant.html');    &lt;br /&gt;&amp;lt;/script&amp;gt;    &lt;br /&gt;&amp;lt;/html&amp;gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-6582307415127842530?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/6582307415127842530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/09/pregnancy-ticker.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6582307415127842530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6582307415127842530'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/09/pregnancy-ticker.html' title='Pregnancy ticker'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-6972275200988210392</id><published>2010-06-14T09:00:00.001+02:00</published><updated>2010-06-14T09:00:24.803+02:00</updated><title type='text'>SQL Server 2008 Client Tools Install Pain</title><content type='html'>&lt;p&gt;In this blog post &lt;a title="http://nomisit.wordpress.com/2009/04/21/installing-sql-server-2008-client-tools-what-a-pain/" href="http://nomisit.wordpress.com/2009/04/21/installing-sql-server-2008-client-tools-what-a-pain/"&gt;http://nomisit.wordpress.com/2009/04/21/installing-sql-server-2008-client-tools-what-a-pain/&lt;/a&gt; it is described how you need to upgrade Visual Studio 2008 to SP1 if you are installing any of these…&lt;/p&gt;  &lt;li&gt;BIDS &lt;/li&gt;  &lt;li&gt;Management tools (Basic or Full version) &lt;/li&gt;  &lt;li&gt;Integration Services&lt;/li&gt;  &lt;p&gt;… and you have previously installed VS2008, then you will need to upgrade it to SP1.&lt;/p&gt;  &lt;p&gt;I did install a trial version of VS2008 but now I have uninstalled everything, but still getting the same failed requirement.&lt;/p&gt;  &lt;p&gt;So now I am trying to install SP1, even if I don’t know what products it could be upgrading since I removed them all. Perhaps it is something like a C++ runtime or something that was left behind by the uninstaller?&lt;/p&gt;  &lt;p&gt;The SP1 installer seemed to be stuck on “WebDesignerCore_KB950278”. But proceeded after quite a while (20 minutes, maybe more).&lt;/p&gt;  &lt;p&gt;Then it took a long time to install “VS90sp1-KB945140-X86-ENU”.&lt;/p&gt;  &lt;p&gt;I got a Fatal Error at the end of the install, so now I don’t know what was installed or not. So either try to reinstall SP1 or try to install the client tools?&lt;/p&gt;  &lt;p&gt;Tried to install client tools, and to my surprise it succeeded!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-6972275200988210392?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/6972275200988210392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/06/sql-server-2008-client-tools-install.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6972275200988210392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6972275200988210392'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/06/sql-server-2008-client-tools-install.html' title='SQL Server 2008 Client Tools Install Pain'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-1287270473005765252</id><published>2010-05-19T10:17:00.001+02:00</published><updated>2010-09-27T11:16:03.732+02:00</updated><title type='text'>Wrapping Web Service Proxy objects to Common Cargos using Serialization</title><content type='html'>&lt;p&gt;In my &lt;a href="http://stgaup.blogspot.com/2009/01/wrapping-web-service-response-to-cargo.html"&gt;previous post&lt;/a&gt; I described a way to wrap web service proxy objects to common cargo objects using reflection. This method works only for objects with only value type properties.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; The performance of this code may not be the best.&lt;/p&gt;  &lt;p&gt;internal U wrapToCargoBySerialization&amp;lt;T, U&amp;gt;(T source, U target)    &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UTF8Encoding encoding = new UTF8Encoding(true); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; XmlRootAttribute rootAttribute = new XmlRootAttribute();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; XmlSerializer xmlSerializerSource = new XmlSerializer(typeof(T), rootAttribute);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; MemoryStream stream = new MemoryStream();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; xmlSerializerSource.Serialize(stream, source);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; string xml = encoding.GetString(stream.ToArray());     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; xml = xml.Replace(&amp;quot;&amp;lt;?xml version=\&amp;quot;1.0\&amp;quot;?&amp;gt;&amp;quot;, string.Empty); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; MemoryStream ms = new MemoryStream(encoding.GetBytes(xml)); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; XmlSerializer xmlSerializerTarget = new XmlSerializer(typeof(U),rootAttribute); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; return (U)xmlSerializerTarget.Deserialize(ms);    &lt;br /&gt;} &lt;/p&gt;  &lt;p&gt;Usage example:    &lt;br /&gt;CommonObjects.Customer cust;     &lt;br /&gt;cust = wrapToCargoBySerialization(wsCustomer, cust);&lt;/p&gt;  &lt;p&gt;Note that I had to remove the &amp;lt;?xml … /&amp;gt; declaration before deserializing.&lt;/p&gt;  &lt;p&gt;A prerequisite for using this method is that the objects have the same structure. To achieve this I simply copy the web service objects from the web reference to a common cargo project. The common objects are used for passing information between layers in the application.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-1287270473005765252?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/1287270473005765252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/05/wrapping-web-service-proxy-objects-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1287270473005765252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1287270473005765252'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/05/wrapping-web-service-proxy-objects-to.html' title='Wrapping Web Service Proxy objects to Common Cargos using Serialization'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-6380032083484948949</id><published>2010-04-29T15:59:00.001+02:00</published><updated>2010-04-29T16:11:47.247+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Utils'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows'/><title type='text'>Windows Installer Cleanup Utility</title><content type='html'>&lt;p&gt;Freeing up space on your hard disks is an ever ongoing battle for some people, for instance if you at some point decided on a too small system partition (“10 Gigs must surely be enough?”).&lt;/p&gt;  &lt;p&gt;So in the Windows directory (on Windows XP at least) there is a folder called “Installer” where many install files will be found. It may be tempting to just delete all files here, freeing up many gigs of space, but that could cause problems later, for instance if you want to upgrade some program that needs the old version to be uninstalled first.&lt;/p&gt;  &lt;p&gt;So this is where the &lt;a href="http://support.microsoft.com/default.aspx?scid=kb%3ben-us%3b290301"&gt;Windows Installer Cleanup Utility&lt;/a&gt; comes into play. Read this excellent blog post on where to get it and how to use it: &lt;a title="http://blogs.msdn.com/heaths/archive/2007/01/31/how-to-safely-delete-orphaned-patches.aspx" href="http://blogs.msdn.com/heaths/archive/2007/01/31/how-to-safely-delete-orphaned-patches.aspx"&gt;http://blogs.msdn.com/heaths/archive/2007/01/31/how-to-safely-delete-orphaned-patches.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Essentially after installing the utility, you may run a command that will delete orphaned installation files, that is install files for programs that are no longer on your system.&lt;/p&gt;  &lt;p&gt;I managed to free up enough space to install MS VS 2008 Professional… :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-6380032083484948949?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/6380032083484948949/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/04/windows-installer-cleanup-utility.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6380032083484948949'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6380032083484948949'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/04/windows-installer-cleanup-utility.html' title='Windows Installer Cleanup Utility'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-3907476381740327123</id><published>2010-04-13T14:12:00.001+02:00</published><updated>2010-04-20T12:40:34.139+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='Freeware'/><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Syncroniziong files with FreeCommander and Compare It!</title><content type='html'>&lt;p&gt;Up until now I have mostly used SourceSafe and TFS for comparing files. Recently I had a situation where I had to do a so called “Baseless Merge” in TFS. This worked quite well for most files. Then there were some files that were not as easy to merge. So a manual merge was required. Not being quite happy with the file comparing offered by VS, I searched and found a nice option:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Use FreeCommander to find all files that have differences. &lt;/li&gt;    &lt;li&gt;Use Compare It! to compare and syncronize the contents of files. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To be able to use the “Compare left and right sides” option in FreeCommander, you need to go into Extras –&amp;gt; Settings in FreeCommander, in the Programs section, and set “Compare files” to “C:\Program Files\Compare It!\wincmp3.exe” assuming that’s where Compare It! is installed.&lt;/p&gt;  &lt;p&gt;FreeCommander may be found at &lt;a href="http://www.freecommander.com"&gt;http://www.freecommander.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Compare It! may be found at &lt;a title="http://www.grigsoft.com" href="http://www.grigsoft.com"&gt;http://www.grigsoft.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;I think using these two great tools together is synergy in action!&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-3907476381740327123?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/3907476381740327123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/04/syncroniziong-files-with-freecommander.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3907476381740327123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3907476381740327123'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/04/syncroniziong-files-with-freecommander.html' title='Syncroniziong files with FreeCommander and Compare It!'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-2621169134444322110</id><published>2010-04-09T09:27:00.001+02:00</published><updated>2010-04-09T09:27:14.651+02:00</updated><title type='text'>Chinese comments</title><content type='html'>&lt;p&gt;I have been getting some comments, I am guessing they are in Chinese. This may seem unnecessary to point out, but anyway here goes:&lt;/p&gt;  &lt;p&gt;I DON’T UNDERSTAND CHINESE!&lt;/p&gt;  &lt;p&gt;So please stop commenting in any languages except English, or in some rare cases where I have blogged in Norwegian where this language may be used (I also understand Swedish and Danish and a bit of German).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-2621169134444322110?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/2621169134444322110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/04/chinese-comments.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2621169134444322110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2621169134444322110'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/04/chinese-comments.html' title='Chinese comments'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-684934443929387494</id><published>2010-02-26T13:54:00.001+01:00</published><updated>2010-02-26T13:54:36.766+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Transact-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Common Table Expressions'/><title type='text'>Common Table Expression for Database Structure</title><content type='html'>&lt;p&gt;When copying data from one database to another, breaking constraints is always a problem. If you do not insert data in a certain sequence, you will get foreign key violations. So I tried to work out a CTE that starts with all tables that have no foreign keys, then the tables referencing them, then the once referencing them again, and so on… So came up with this:&lt;/p&gt;  &lt;p&gt;WITH CTE (name,object_id, lvl)   &lt;br /&gt;AS    &lt;br /&gt;(    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; select name, object_id, 0 AS lvl from sys.tables     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; where object_id NOT IN (select parent_object_id from sys.foreign_keys)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;UNION ALL &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; select tbls.name, tbls.object_id , lvl + 1 from sys.tables tbls    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; join sys.foreign_keys keys on tbls.object_id = keys.parent_object_id    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; join CTE on CTE.object_id =&amp;#160; keys.referenced_object_id    &lt;br /&gt;)    &lt;br /&gt;SELECT * FROM CTE    &lt;br /&gt;OPTION (MAXRECURSION 10000)&lt;/p&gt;  &lt;p&gt;Note that this will not work if you have self-referencing tables, ie. tables that have a foreign key pointing to its own primary key. Also the same tables may appear many times because they reference the same tables. And also if the same table have many foreign keys it will appear many times.&lt;/p&gt;  &lt;p&gt;The conclusion is that this does not solve my problem, but it was fun to create the CTE anyway.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-684934443929387494?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/684934443929387494/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/02/common-table-expression-for-database.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/684934443929387494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/684934443929387494'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/02/common-table-expression-for-database.html' title='Common Table Expression for Database Structure'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-5832165835837212585</id><published>2010-02-16T13:19:00.001+01:00</published><updated>2010-02-16T13:27:01.807+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPiServer'/><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Experiences on upgrading EPiServer 4.51 to 4.62B part 2</title><content type='html'>&lt;p&gt;Ok, so the upgrade has been done, but will the project compile?&lt;/p&gt;  &lt;p&gt;Sadly the answer is no.&lt;/p&gt;  &lt;p&gt;I got the exact same problems described here: &lt;a title="http://world.episerver.com/templates/forum/pages/thread.aspx?id=19575&amp;amp;epslanguage=en" href="http://world.episerver.com/templates/forum/pages/thread.aspx?id=19575&amp;amp;epslanguage=en"&gt;http://world.episerver.com/templates/forum/pages/thread.aspx?id=19575&amp;amp;epslanguage=en&lt;/a&gt;. It took some time for me to understand the answer to the part they did give an answer to. They didn’t answer the second question at all.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Problem 1: WsrpHelper doesn’t exist any more&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;My solution, which saves me from having to go through 8-10 places and correct the code, was to create a new class inside the WsrpPortal.aspx.cs file:&lt;/p&gt;  &lt;p&gt;class WsrpHelper   &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public static IConsumerEnvironment ConsumerEnvironment    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; get { return ElektroPost.Wsrp.Consumer.ConsumerContext.ConsumerEnvironment; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; set { ElektroPost.Wsrp.Consumer.ConsumerContext.ConsumerEnvironment = value; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; public static void EnsureConsumerEnvironment()   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (ElektroPost.Wsrp.Consumer.ConsumerContext.ConsumerEnvironment == null)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ElektroPost.Wsrp.Consumer.ConsumerContext.ConsumerEnvironment = ConsumerFactory.ConsumerEnvironmentInstance();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;} &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;Problem 2: LanguageManager.GetContextLanguage() is obsolete&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;It says in the error message that you should use LanguageContext.Current as a replacement, but that would create a type conversion exception.&lt;/p&gt;  &lt;p&gt;I am guessing that you can to use LanguageContext.Current.CurrentUILanguageID as a replacement for GetContextLanguage() (please do correct me if I’m wrong).&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;DISCLAIMER: &lt;/u&gt;&lt;/strong&gt;    &lt;br /&gt;I haven’t been able to test my solution, since the webs I am working on don’t actually use the portal framework. My code compiles now, so the web is up and running, and I am happy for the time being. If anyone finds any flaw in my solutions please don’t hesistate to leave a comment.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-5832165835837212585?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/5832165835837212585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/02/experiences-on-upgrading-episerver-451.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5832165835837212585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5832165835837212585'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/02/experiences-on-upgrading-episerver-451.html' title='Experiences on upgrading EPiServer 4.51 to 4.62B part 2'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-7386875762269265741</id><published>2010-02-15T11:35:00.001+01:00</published><updated>2010-02-15T11:49:42.968+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPiServer'/><category scheme='http://www.blogger.com/atom/ns#' term='EPiServer Manager'/><title type='text'>The EPiServer Offline Package is a ZIP-file</title><content type='html'>&lt;p&gt;So if you for instance need to just upgrade the database, not the whole EPiServer installation, you can just rename the offline upgrade package from .pkg to .zip, and you will find all the files used by the upgrade wizard inside.&lt;/p&gt;  &lt;p&gt;Ypou can create an offline upgrade package from and to the versions you want using the EPiServer Manager, as mentioned in my previous post.&lt;/p&gt;  &lt;p&gt;The database scripts are located in the “Upgrade” folder, and if you sort them ascending by name and run them in that order, you should be able to upgrade the database “manually”.&lt;/p&gt;  &lt;p&gt;Scenarios where this method may be used may be &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;you did/tested the upgrade in your development environment and then deployed the upgraded files&lt;/li&gt;    &lt;li&gt;you have already upgraded EPiServer on a staging server and the production database (which is an earlier version) should be restored on the staging server&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The EPiServer Manager does other things than just copying files, like registering components in the GAC, so use the EPiServer Manager whenever possible. Also, remember to always have nescessary backups available.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-7386875762269265741?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/7386875762269265741/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/02/episerver-offline-package-is-zip-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7386875762269265741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7386875762269265741'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/02/episerver-offline-package-is-zip-file.html' title='The EPiServer Offline Package is a ZIP-file'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-3345517009255030037</id><published>2010-02-12T15:20:00.001+01:00</published><updated>2010-02-12T15:29:06.454+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPiServer'/><category scheme='http://www.blogger.com/atom/ns#' term='EPiServer Manager'/><title type='text'>Experiences from upgrading EPiServer from version 4.51 to 4.62B</title><content type='html'>&lt;p&gt;Ok, so previously I have upgraded my project files and solutions from Visual Studio 2003 to 2008, and have upgraded to master pages. I wrote about this in an earlier post: &lt;a title="http://stgaup.blogspot.com/2010/02/upgrading-episerver-to-masterpages.html" href="http://stgaup.blogspot.com/2010/02/upgrading-episerver-to-masterpages.html"&gt;http://stgaup.blogspot.com/2010/02/upgrading-episerver-to-masterpages.html&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;So now the next step. Upgrading the EPiServer version from 4.51 to 4.62B.&lt;/p&gt;  &lt;p&gt;Since I am going to upgrade at least 2 sites, and someone in IT Operations needs to do the same upgrade on the production systems, I thought it would be a good idea to create an offline install. I had to google a bit and eventually fond out that to create an offline package, you need to:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Start EPiServer Manager&lt;/li&gt;    &lt;li&gt;On the Tools menu, select “Create offline installation…”&lt;/li&gt;    &lt;li&gt;Click Next&lt;/li&gt;    &lt;li&gt;Select “Upgrade”&lt;/li&gt;    &lt;li&gt;Select From version in my case 4.51)&lt;/li&gt;    &lt;li&gt;Select To Version (4.62B)&lt;/li&gt;    &lt;li&gt;Specify directory where the package should be created.&lt;/li&gt;    &lt;li&gt;Click “Create”.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;I had no problems with this part of the job.&lt;/p&gt;  &lt;p&gt;Next I had to do the upgrade:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Backup all files and the EPiServer database.&lt;/li&gt;    &lt;li&gt;Right-click the web site to upgrade in the EPiServer Manager, and select “Upgrade…”.&lt;/li&gt;    &lt;li&gt;Click Next.&lt;/li&gt;    &lt;li&gt;Select “Offline” and then browse to the package created before.&lt;/li&gt;    &lt;li&gt;Click Next.&lt;/li&gt;    &lt;li&gt;Review upgrade info, then click “Upgrade”.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The next thing happening was that the upgrade was being done, and the progress bar was showing some progress, until about 20% on the way. Then I got an error message: “Failed to register ASP.NET client scripts on this site”&lt;/p&gt;  &lt;p&gt;It turns out that the EPiServer Manager is not able to install when there are versions of the .NET Framework installed after version 2.0. So the dirty trick you need to do is to remove the 3.0 and 3.5 folders from the WINDOWS\Microsoft .NET\Framework folder because EPiServer Manager will try to locate aspnet_regiis.exe (and maybe other command line utilities) in those folders, and it’s not there. This thread was helpful: &lt;a title="http://world.episerver.com/Templates/Forum/Pages/Thread.aspx?id=17376&amp;amp;epslanguage=en" href="http://world.episerver.com/Templates/Forum/Pages/Thread.aspx?id=17376&amp;amp;epslanguage=en"&gt;http://world.episerver.com/Templates/Forum/Pages/Thread.aspx?id=17376&amp;amp;epslanguage=en&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Ok, so after I had moved those folders, it seemed that the upgrade worked, until I tried to browse the web:&lt;/p&gt;  &lt;p&gt;EPiServer 4.62.0.533 can only be used with database version 100, current version is 90. Make sure both database and assemblies are upgraded correctly.&lt;/p&gt;  &lt;p&gt;I didn’t get any errors while upgrading. Everything seemed to go well, but it didn’t. The EPiServer Manager failed to upgrade the database.&lt;/p&gt;  &lt;p&gt;I am assuming at this point that the database upgrade failed because the web was using Windows Integrated security with SQL Server. I thought it could work because I had made sure that my windows user account had owner rights to the database, but sadly it failed.&lt;/p&gt;  &lt;p&gt;Tip: Don’t use Windows Integrated Security with EPiServer (when upgrading) even though Microsoft recommends that as the most secure way of accessing SQL Server. If you do, you will (probably) need to set up your site with impersonation, and turn off anonymous access.&lt;/p&gt;  &lt;p&gt;Ok, so then I tried to run the upgrade once more after setting a SQL Server username/password. I then got the message:&lt;/p&gt;  &lt;p&gt;The site is already up to date (4.62.0.533) – no new versions available.&lt;/p&gt;  &lt;p&gt;So now time for my next dirty trick, one that I have used before, which is to copy the old EPiServer.dll back into the bin folder of the web site. (Of course I had a backup.)&lt;/p&gt;  &lt;p&gt;So new upgrade attempt. First had to restart the EPiServer Manager, because it still thoght the web was version 4.62B. After restarting it said 4.51, as I intended it to.&lt;/p&gt;  &lt;p&gt;This time the upgrade worked as it should, and the web is up and runnig again, now og EPiServer 4.62B.&lt;/p&gt;  &lt;p&gt;IMPORTANT: Copy back the .NET 3.0 and 3.5 Framwork files to their correct location!&lt;/p&gt;  &lt;p&gt;NEXT STEP: Upgrade to CMS 5? Am I brave enough?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-3345517009255030037?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/3345517009255030037/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/02/experiences-from-upgrading-episerver.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3345517009255030037'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3345517009255030037'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/02/experiences-from-upgrading-episerver.html' title='Experiences from upgrading EPiServer from version 4.51 to 4.62B'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-2680113233682596344</id><published>2010-02-10T16:17:00.001+01:00</published><updated>2010-02-10T16:17:10.364+01:00</updated><title type='text'>My Second SmallBasic program</title><content type='html'>&lt;p&gt;This one draws a sinus curve (well a cosinus curve):&lt;/p&gt;  &lt;p&gt;GraphicsWindow.Title = &amp;quot;Hello World!&amp;quot;   &lt;br /&gt;GraphicsWindow.BackgroundColor = &amp;quot;Yellow&amp;quot;    &lt;br /&gt;GraphicsWindow.Width = 320    &lt;br /&gt;GraphicsWindow.Height = 200    &lt;br /&gt;GraphicsWindow.Show() &lt;/p&gt;  &lt;p&gt;oldx = 0   &lt;br /&gt;oldy = Math.Cos(0) * 100 + 100 &lt;/p&gt;  &lt;p&gt;For x = 1 To 320   &lt;br /&gt;&amp;#160; y = Math.Cos(x/10) * 100 + 100    &lt;br /&gt;&amp;#160; GraphicsWindow.DrawLine(oldx,oldy,x,y)    &lt;br /&gt;&amp;#160; oldx = x    &lt;br /&gt;&amp;#160; oldy = y    &lt;br /&gt;EndFor&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-2680113233682596344?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/2680113233682596344/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/02/my-second-smallbasic-program.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2680113233682596344'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2680113233682596344'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/02/my-second-smallbasic-program.html' title='My Second SmallBasic program'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-1100243614949479868</id><published>2010-02-10T16:05:00.001+01:00</published><updated>2010-02-10T16:06:46.042+01:00</updated><title type='text'>My first SmallBasic program</title><content type='html'>&lt;p&gt;Ok, my first was “Hello World”, but this is my first using the GraphicsWindow:&lt;/p&gt;  &lt;p&gt;GraphicsWindow.Title = &amp;quot;Hello World!&amp;quot;   &lt;br /&gt;GraphicsWindow.BackgroundColor = &amp;quot;Yellow&amp;quot;    &lt;br /&gt;GraphicsWindow.Width = 320    &lt;br /&gt;GraphicsWindow.Height = 200    &lt;br /&gt;GraphicsWindow.Show() &lt;/p&gt;  &lt;p&gt;oldx = Math.Sin(0) * 100 + 160   &lt;br /&gt;oldy = Math.Cos(0) * 100 + 100 &lt;/p&gt;  &lt;p&gt;For i = 0.1 To 2 * Math.Pi Step 0.1   &lt;br /&gt;&amp;#160; x = Math.Sin(i) * 100 + 160    &lt;br /&gt;&amp;#160; y = Math.Cos(i) * 100 + 100    &lt;br /&gt;&amp;#160; GraphicsWindow.DrawLine(oldx,oldy,x,y)    &lt;br /&gt;&amp;#160; oldx = x    &lt;br /&gt;&amp;#160; oldy = y    &lt;br /&gt;EndFor&lt;/p&gt;  &lt;p&gt;What does it do? It draws a circle. Great huh? Oh I could have used GraphicsWindow.DrawCircle? Amazing stuff :P&lt;/p&gt;  &lt;p&gt;Btw SmallBasic may be downloaded from &lt;a title="http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx" href="http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx"&gt;http://msdn.microsoft.com/en-us/devlabs/cc950524.aspx&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-1100243614949479868?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/1100243614949479868/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/02/my-first-smallbasic-program.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1100243614949479868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1100243614949479868'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/02/my-first-smallbasic-program.html' title='My first SmallBasic program'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-4808130463880323329</id><published>2010-02-05T14:15:00.001+01:00</published><updated>2010-02-09T09:25:39.793+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPiServer'/><category scheme='http://www.blogger.com/atom/ns#' term='Master Pages'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Upgrading EPiServer to MasterPages</title><content type='html'>&lt;p&gt;&lt;u&gt;Initial Status:&lt;/u&gt;    &lt;br /&gt;I have already upgraded the EPiServer solution from Visual Studio 2003 / .NET 1.1 to Visual Studio 2008 / .NET 2.0/3.5. First upgraded to VS2005/.NET 2.0 by opening the projects in VS2005 and using the wizard, then converting the project to a web application. Then did the same again, opening the project in VS 2008. Everything seemed to work fine after the upgrade. So next step is to upgrade from using EPiServer:DefaultFramework to using master pages.&lt;/p&gt;  &lt;p&gt;&lt;u&gt;Next steps:&lt;/u&gt;    &lt;br /&gt;I found the (very good I might add) article: &lt;a title="http://world.episerver.com/Articles/Items/Experiences-from-migrating-to-EPiServer-461-and-ASPNET-20/" href="http://world.episerver.com/Articles/Items/Experiences-from-migrating-to-EPiServer-461-and-ASPNET-20/"&gt;http://world.episerver.com/Articles/Items/Experiences-from-migrating-to-EPiServer-461-and-ASPNET-20/&lt;/a&gt; and tried to follow the steps described from the section called “Upgrading your custom templates to ASP.NET 2.0”. However there seems to be some little information missing:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;In addition to changing the &amp;lt;@ Control … to &amp;lt;@ Master … you must also in code-behind change the inheritance so that the master page inherits from System.Web.UI.MasterPage in stead of EPiServer.WebControls.ContentFramework.      &lt;br /&gt;This will cause some problems:&lt;/li&gt;    &lt;ol&gt;     &lt;li&gt;If you have any references to CurrentPage, you will need to fix it. I fixed it by creating a new property on the master page called CurrentPage:       &lt;br /&gt;        &lt;br /&gt;public PageData CurrentPage        &lt;br /&gt;{        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; get        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; PageBase pb = (PageBase)this.Page;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return pb.CurrentPage;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }        &lt;br /&gt;}        &lt;br /&gt;        &lt;br /&gt;&lt;/li&gt;      &lt;li&gt;Also if you are using any commands that are not prefixed and are using functionality from the previous base class you will need to fix them:&lt;/li&gt;      &lt;ol&gt;       &lt;li&gt;Translate(…) =&amp;gt; EPiServer.Global.EPLang.Translate(…)         &lt;br /&gt;I solved this by creating a private function in the master page code-behind, which saved me from changing code in multiple places:&lt;/li&gt;        &lt;p&gt;private string Translate(string key)         &lt;br /&gt;{          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return EPiServer.Global.EPLang.Translate(key);          &lt;br /&gt;}          &lt;br /&gt;&lt;/p&gt;        &lt;li&gt;GetPage(…) =&amp;gt; EPiServer.Global.EPDataFactory.GetPage(…)         &lt;br /&gt;Again I solved it by creating a private function with the same name:&lt;/li&gt;        &lt;p&gt;private PageData GetPage(PageReference pageLink)         &lt;br /&gt;{          &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return EPiServer.Global.EPDataFactory.GetPage(pageLink);          &lt;br /&gt;}          &lt;br /&gt;          &lt;br /&gt;&lt;/p&gt;     &lt;/ol&gt;   &lt;/ol&gt;    &lt;li&gt;The process of converting from the 1.1 style of declaring the controls in code-behind to the 2.0 way using the .designer.cs file is not always working as is should. I had to go into the code-behind file and remove declarations of controls, and then made a slight change to the front master page file, and the saved it, so that the controls using the runat=”server” attribute were (automatically) declared in the designer.cs file. Also some events vere explicitly declared in code-behind (opposed to the new way of using “AutoEventWireup=True”. I just removed them as they were doing nothing anyway.     &lt;br /&gt;      &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Also had a small problem due to some additions to the asp.net control gallery and poor naming conventions. The old EPiServer Content Framework files declared a conrtol called simply “Menu”. This name crashes with the “System.Web.UI.WebControls.Menu” web control, so I just changed the name.     &lt;br /&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;And now my web is up and running with EPiServer 4.51 (on VS2008) and using Master Pages (on only one page so far: default.aspx). After changing all aspx-web forms so that they use the new master page, the next step will be to upgrade EPiServer to 4.62B, and thanks to the previously linked article this should hopefully be a piece of cake.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-4808130463880323329?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/4808130463880323329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/02/upgrading-episerver-to-masterpages.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4808130463880323329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4808130463880323329'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/02/upgrading-episerver-to-masterpages.html' title='Upgrading EPiServer to MasterPages'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-144752315710974170</id><published>2010-01-29T10:27:00.001+01:00</published><updated>2010-02-10T09:34:46.284+01:00</updated><title type='text'>Moving log files</title><content type='html'>&lt;p&gt;I am using log4net and other logging in my apps, and the logs are filling up the disks of the test server, so I created a Windows Scheduled Task to move logs to an archive disk, and also delete very old logs from the archive. I move logs older than 2 weeks to the archive and delete logs older than a year from that archive. I created this vb-script (started from the scheduled task) to do the job:&lt;/p&gt;  &lt;p&gt;'VBScript that moves old log files from C:\LogFiles to E:\LogArchive &lt;/p&gt;  &lt;p&gt;'Folders    &lt;br /&gt;Const FOLDER = &amp;quot;C:\LogFiles&amp;quot;&amp;#160; &lt;br /&gt;Const BACKUP_FOLDER = &amp;quot;E:\LogArchive&amp;quot;&amp;#160; &lt;br /&gt;    &lt;br /&gt;'Objects     &lt;br /&gt;Dim objFSO, objFolder, objFolder2, objFile&amp;#160; &lt;br /&gt;Set objFSO = CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)&amp;#160; &lt;br /&gt;Set objFolder = objFSO.GetFolder(FOLDER) &lt;/p&gt;  &lt;p&gt;'Loop and move    &lt;br /&gt;For Each objFile In objFolder.Files&amp;#160; &lt;br /&gt;&amp;#160; If objFile.DateLastModified &amp;lt; DateAdd(&amp;quot;w&amp;quot;, -2, Now) Then&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; objFile.Move BACKUP_FOLDER &amp;amp; &amp;quot;\&amp;quot; &amp;amp; objFile.Name&amp;#160; &lt;br /&gt;&amp;#160; End If&amp;#160; &lt;br /&gt;Next &lt;/p&gt;  &lt;p&gt;'Delete very old files from target BACKUP_FOLDER    &lt;br /&gt;Set objFolder2 = objFSO.GetFolder(BACKUP_FOLDER)     &lt;br /&gt;For Each objFile In objFolder2.Files&amp;#160; &lt;br /&gt;&amp;#160; If objFile.DateLastModified &amp;lt; DateAdd(&amp;quot;w&amp;quot;, -52, Now) Then&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; objFile.Delete     &lt;br /&gt;&amp;#160; End If&amp;#160; &lt;br /&gt;Next&lt;/p&gt;  &lt;p&gt;Plain old ASP-like code. No Types, everything is just Variant types.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-144752315710974170?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/144752315710974170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2010/01/moving-log-files.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/144752315710974170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/144752315710974170'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2010/01/moving-log-files.html' title='Moving log files'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-3523149022366704177</id><published>2009-12-16T11:22:00.001+01:00</published><updated>2009-12-18T09:32:13.341+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPiServer'/><category scheme='http://www.blogger.com/atom/ns#' term='Transact-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Check if any new properties have been added in EPiServer 4.x</title><content type='html'>&lt;p&gt;The scenario for this is that you have a Test server and a Production server. You are rolling out all changes that have been tested on the Test server to the Production server. You did, being a pro and all, of course make a note of all the changes that were done to properties on the Test server since the last rollout to Production, but just to make sure you want to check what new properties have been added.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Add the Production server as a linked server in SQL Server Management Studio on the Test server, in this example called [LinkedServer].&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Create a new query on the Test server and paste the following query into it. You will need to substitute the names of the database and linked server with names from your environment.&lt;/p&gt;  &lt;p&gt;-- CHECKS IF ANY NEW FIELDS HAVE BEEN ADDED ON THE TEST SERVER   &lt;br /&gt;-- THAT DO NOT EXIST ON THE PRODUCTION SERVER    &lt;br /&gt;USE EPiServerDb;    &lt;br /&gt;GO &lt;/p&gt;  &lt;p&gt;IF EXISTS(   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT testTable.pkID, prodTable.pkID     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM tblPageDefinition testTable    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LEFT JOIN [LinkedServer].[EPiServerDb].[dbo].[tblPageDefinition] prodTable&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ON testTable.pkID = prodTable.pkID    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE prodTable.pkID IS NULL)    &lt;br /&gt;BEGIN    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; PRINT 'NEW PAGE PROPERTIES DETECTED!'    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT pt.Name, pd.Name    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM tblPageType pt JOIN tblPageDefinition pd ON pt.pkID = pd.fkPageTypeID    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE pd.pkID IN (    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT testTable.pkID     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM tblPageDefinition testTable    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; LEFT JOIN [LinkedServer].[EPiServerDb].[dbo].[tblPageDefinition] prodTable&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ON testTable.pkID = prodTable.pkID    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; WHERE prodTable.pkID IS NULL)    &lt;br /&gt;END    &lt;br /&gt;ELSE BEGIN    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; PRINT 'NO NEW PROPERTIES DETECTED.'    &lt;br /&gt;END&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If any new properties have been added, you will see a list of the names of page templates and what properties are new.&lt;/p&gt;  &lt;p&gt;This script was tested on EPiServer 4.61/62 only, but may also work for newer versions of EPiServer.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-3523149022366704177?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/3523149022366704177/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/12/check-if-any-new-properties-have-been.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3523149022366704177'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3523149022366704177'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/12/check-if-any-new-properties-have-been.html' title='Check if any new properties have been added in EPiServer 4.x'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-5919219189390722859</id><published>2009-11-06T13:53:00.001+01:00</published><updated>2009-11-10T13:51:58.141+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Generic Object Factory</title><content type='html'>&lt;p&gt;The following class is a generic object factory. It is used for creating instances of objects from configured or otherwise provided strings. &lt;/p&gt;  &lt;p&gt;The “User Guide” is in the comments.&lt;/p&gt;  &lt;p&gt;/// &amp;lt;summary&amp;gt;   &lt;br /&gt;/// Generic object factory that creates instances of objects from configured or otherwise provided strings.    &lt;br /&gt;/// &amp;lt;/summary&amp;gt;    &lt;br /&gt;public class ObjectFactory    &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// Creates an instance of a class from a string &amp;quot;[namespace.[...].className], [component without filname extension],[Version],[Culture],[…]&amp;quot;.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;typeparam name=&amp;quot;T&amp;quot;&amp;gt;The type to create.&amp;lt;/typeparam&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;param name=&amp;quot;configuredClassAndAssembly&amp;quot;&amp;gt;Format: [namespace.[...].className], [component without filname extension]&amp;lt;/param&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;returns&amp;gt;An object of type T.&amp;lt;/returns&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;remarks&amp;gt;This method uses generics!&amp;lt;/remarks&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; public static T CreateClassInstance&amp;lt;T&amp;gt;(string configuredClassAndAssembly)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Get type to instanciate    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Type tp = Type.GetType(configuredClassAndAssembly, true); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //load assembly   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Assembly assembly = Assembly.GetAssembly(tp); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //create class instance   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; T instance = (T)assembly.CreateInstance(tp.FullName); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //return instance   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return instance;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;I am using it to create instances of objects that implement certain interfaces, so that I can swap the implementation, or even mock it, by changing the configuration.&lt;/p&gt;  &lt;p&gt;The string that tells which object to create uses the format of the Type.GetType(string) string.&lt;/p&gt;  &lt;p&gt;Some error handling should be added.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-5919219189390722859?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/5919219189390722859/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/11/generic-object-factory.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5919219189390722859'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5919219189390722859'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/11/generic-object-factory.html' title='Generic Object Factory'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-4674260534281988026</id><published>2009-10-05T14:04:00.001+02:00</published><updated>2009-10-05T14:04:46.427+02:00</updated><title type='text'>Skjermbrev (in Norwegian)</title><content type='html'>&lt;p&gt;Jeg kom opp i en problemstilling på jobben der jeg trengte et ord for “bekreftelses-e-post”, og så lurte jeg på hva man da skal bruke, for jeg synes det ser litt rart ut med disse alternativene:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;bekreftelsese-post&lt;/li&gt;    &lt;li&gt;bekreftelses-e-post (bryter regel om bruk av bindestrek)&lt;/li&gt;    &lt;li&gt;bekreftelses e-post (bryter regel om orddeling)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Det er jo anbefalt å bruke ordet “e-post” for det som på engelsk heter e-mail.&lt;/p&gt;  &lt;p&gt;Jeg sendte derfor spørsmålet til Per Egil Hegge i Aftenposten, og fikk følgende svar: “Du løser dette ved å bruke mitt favorittord: skjermbrev.”&lt;/p&gt;  &lt;p&gt;Så nå vet jeg (og dere) det. Fra nå av skal jeg prøve å snike inn ordet “skjermbrev” alle steder det er mulig :D&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-4674260534281988026?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/4674260534281988026/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/10/skjermbrev-in-norwegian.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4674260534281988026'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4674260534281988026'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/10/skjermbrev-in-norwegian.html' title='Skjermbrev (in Norwegian)'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-6794049787276297221</id><published>2009-10-02T13:55:00.001+02:00</published><updated>2009-10-02T13:55:12.093+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPiServer'/><title type='text'>Styles missing in EPiServer Edit/Admin mode</title><content type='html'>&lt;p&gt;If you ever experience this, it’s probably because EPiServer uses a custom remapping for the 404 – Page Not Found error in IIS. To fix it do the following:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Open IIS manager, and right click on the web site.&lt;/li&gt;    &lt;li&gt;Select “Properties” from the dropdown menu.&lt;/li&gt;    &lt;li&gt;On the “Custom Errors” tab, scroll down the list until you see “404” in the HTTP Error column.&lt;/li&gt;    &lt;li&gt;Double click the 404 entry to open the properties box.&lt;/li&gt;    &lt;li&gt;Set the Message type to “URL”.&lt;/li&gt;    &lt;li&gt;Type “/util/NotFound.aspx” in the URL text box.&lt;/li&gt;    &lt;li&gt;Click “OK”.&lt;/li&gt;    &lt;li&gt;Click “OK” in the web site properties dialog to close it.&lt;/li&gt;    &lt;li&gt;That’s it, now Bob’s your Uncle!&lt;/li&gt; &lt;/ol&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-6794049787276297221?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/6794049787276297221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/10/styles-missing-in-episerver-editadmin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6794049787276297221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6794049787276297221'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/10/styles-missing-in-episerver-editadmin.html' title='Styles missing in EPiServer Edit/Admin mode'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-1175556909195351392</id><published>2009-09-21T15:14:00.000+02:00</published><updated>2011-01-17T13:27:45.408+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPiServer'/><category scheme='http://www.blogger.com/atom/ns#' term='XForms'/><title type='text'>EPiServer declines to support XForms on IE8 for CMS 4.x</title><content type='html'>&lt;p&gt;According to this thread &lt;a title="http://world.episerver.com/Forum/Pages/Thread.aspx?id=28931&amp;amp;epslanguage=en" href="http://world.episerver.com/Forum/Pages/Thread.aspx?id=28931&amp;amp;epslanguage=en"&gt;http://world.episerver.com/Forum/Pages/Thread.aspx?id=28931&amp;amp;epslanguage=en&lt;/a&gt; it seems that EPiServer is denying responsibility to make XForms on EPiServer 4.x work with IE8 since IE8 was released after EPiServer 4.x.&lt;/p&gt;  &lt;p&gt;The customers are experiencing an error when loading XForms with radiobuttons and/or checkboxes. The error is “invalid form” (translated from the Norwegian “ugyldig skjema”).&lt;/p&gt;  &lt;p&gt;UPDATE 2011-01-17: Also I have experienced that in IE8, the submit button will not submit the xform which is strange, since it should be calling a javascript function: “return(false)”, and then specifying an action string.&lt;/p&gt;  &lt;p&gt;In the comments to this posting, Björn Sållarp has proposed a solution from his blog: &lt;a title="http://blog.sallarp.com/episerver-xforms-ie8/" href="http://blog.sallarp.com/episerver-xforms-ie8/"&gt;http://blog.sallarp.com/episerver-xforms-ie8/&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-1175556909195351392?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/1175556909195351392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/09/episerver-declines-to-support-xforms-on.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1175556909195351392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1175556909195351392'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/09/episerver-declines-to-support-xforms-on.html' title='EPiServer declines to support XForms on IE8 for CMS 4.x'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-416801618913939717</id><published>2009-09-21T11:50:00.001+02:00</published><updated>2009-09-21T11:50:21.615+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile Phone'/><title type='text'>Save power on the cell phone</title><content type='html'>&lt;p&gt;My HTC S730 is using a lot of power, and has little standby time. Recently it stopped working, so I played with the settings, and by setting the Band Select (“Båndvalg” in Norwegian, and number 3 on the Settings menu) to a fixed value in stead of using the “Auto” option, my phone now uses a lot less power. I selected the “GSM” network type and the “Euro band” band type. My standby time used to be like one to two days, but now its about twice that.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-416801618913939717?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/416801618913939717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/09/save-power-on-cell-phone.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/416801618913939717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/416801618913939717'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/09/save-power-on-cell-phone.html' title='Save power on the cell phone'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-3946972746687717385</id><published>2009-09-11T14:49:00.001+02:00</published><updated>2009-09-14T08:50:11.918+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Getting paths for an application</title><content type='html'>&lt;p&gt;I am creating an application that needs to load an assembly dynamically from the bin-folder of the application. This is not as straight forward as one might think. &lt;/p&gt;  &lt;p&gt;So I tried the following:&lt;/p&gt;  &lt;p&gt;string s1 = Directory.GetCurrentDirectory();   &lt;br /&gt;string s2 = Environment.CurrentDirectory;    &lt;br /&gt;string s3 = Assembly.GetExecutingAssembly().Location;    &lt;br /&gt;string s4 = new DirectoryInfo(&amp;quot;~/bin&amp;quot;).FullName;    &lt;br /&gt;string s5 = new DirectoryInfo(&amp;quot;/bin&amp;quot;).FullName;    &lt;br /&gt;string s6 = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);    &lt;br /&gt;string s7 = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);    &lt;br /&gt;string s8 = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);&lt;/p&gt;  &lt;p&gt;Results:&lt;/p&gt;  &lt;p&gt;s1 = s2 = “C:\Windows\system32”&lt;/p&gt;  &lt;p&gt;s3 = &amp;quot;C:\\WINDOWS\\Microsoft.NET\\Framework\\v2.0.50727\\Temporary ASP.NET Files\\root\\101551d3\\93890f66\\assembly\\dl3\\f2069ce7\\fe4f0aea_dc32ca01\\MyAssemblyName.DLL&amp;quot;&lt;/p&gt;  &lt;p&gt;s4 = &amp;quot;C:\\WINDOWS\\system32\\~\\bin&amp;quot;&lt;/p&gt;  &lt;p&gt;s5 = &amp;quot;C:\\bin&amp;quot;&lt;/p&gt;  &lt;p&gt;s6 = &amp;quot;C:\\Documents and Settings\\MyMachineName\\ASPNET\\Local Settings\\Application Data&amp;quot; (getting desperate, I know)&lt;/p&gt;  &lt;p&gt;s7 = &amp;quot;C:\\Documents and Settings\\MyMachineName\\ASPNET\\Application Data&amp;quot;&lt;/p&gt;  &lt;p&gt;Finally found one that worked:&lt;/p&gt;  &lt;p&gt;s8 = “&lt;a href="file:///\\C:\\DevProjects\\&amp;hellip;\\MyAppDir\\bin"&gt;file:\\C:\\DevProjects\\…\\MyAppDir\\bin&lt;/a&gt;”&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-3946972746687717385?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/3946972746687717385/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/09/getting-paths-for-application.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3946972746687717385'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3946972746687717385'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/09/getting-paths-for-application.html' title='Getting paths for an application'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-9063077762811536552</id><published>2009-08-24T09:58:00.001+02:00</published><updated>2009-08-27T11:59:33.375+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SMTP'/><category scheme='http://www.blogger.com/atom/ns#' term='Mail'/><title type='text'>Bare linefeeds in SMTP Messages, status 451</title><content type='html'>&lt;p&gt;I was having a problem with mails that were not being sent as they were supposed to be, and the problem could be caused by the use of bare linefeeds in the message body.&lt;/p&gt;  &lt;p&gt;A bare linefeed is a linefeed that has only a linefeed (LF = “\n” in C#/C++/Java, ASCII code 10 decimal) and no carriage return (CR = “\r”, ASCII code 13 decimal).&lt;/p&gt;  &lt;p&gt;Internet e-mail standards forbid the use of bare linefeeds, and some mailservers will reject a mail using bare linefeeds, with the status 451 (other mailservers wil accept them and just correct the mistake itself).&lt;/p&gt;  &lt;p&gt;In stead of using bare linefeeds, a linefeed should always come with a carriage return (CR + LF = “\r\n”).&lt;/p&gt;  &lt;p&gt;Read the full story at &lt;a href="http://www.dylanbeattie.net/docs/iis6_bare_linefeed.html"&gt;http://www.dylanbeattie.net/docs/iis6_bare_linefeed.html&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-9063077762811536552?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/9063077762811536552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/08/bare-linefeeds-is-smtp-messages.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/9063077762811536552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/9063077762811536552'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/08/bare-linefeeds-is-smtp-messages.html' title='Bare linefeeds in SMTP Messages, status 451'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-4860525065578530795</id><published>2009-07-01T10:25:00.001+02:00</published><updated>2009-07-01T12:48:53.998+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VM'/><category scheme='http://www.blogger.com/atom/ns#' term='VPC'/><category scheme='http://www.blogger.com/atom/ns#' term='Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='System Tools'/><category scheme='http://www.blogger.com/atom/ns#' term='VMWare'/><category scheme='http://www.blogger.com/atom/ns#' term='Disk Tools'/><title type='text'>TIP: Defragment your VMs and VPCs</title><content type='html'>&lt;p&gt;I have several VMs (VMWare) and VPCs (MS VPC), and one of them in particular has been performing worse and worse, so I thought it could be good to defragment it. &lt;/p&gt;  &lt;p&gt;Now there’s internal fragmentation and there’s external fragmentation (just like indexes in SQL Server :P). The internal fragmentation is handled using the windows defragmentation tool inside the VM or VPC. External fragmentation occurs if you have set your disks to grow incrementally as needed. You could also say that all the space for your virtual disks should be reserved, and if your physical disks were defragmented in the first place, there would be no external fragmentation of your virtual disks. But if you let them grow incrementally, or your physical disk was fragmented when you created the virtual disk, there might be some fragmentation.&lt;/p&gt;  &lt;p&gt;So I found this excellent tool from Sysinternals: &lt;a title="http://technet.microsoft.com/nb-no/sysinternals/bb897428(en-us).aspx" href="http://technet.microsoft.com/nb-no/sysinternals/bb897428(en-us).aspx"&gt;http://technet.microsoft.com/nb-no/sysinternals/bb897428(en-us).aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now I don’t need to defragment the whole physical disk. I can just defragment one file at a time. Should save me some time :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-4860525065578530795?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/4860525065578530795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/07/tip-defragment-your-vms-and-vpcs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4860525065578530795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4860525065578530795'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/07/tip-defragment-your-vms-and-vpcs.html' title='TIP: Defragment your VMs and VPCs'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-7977922323683336680</id><published>2009-07-01T09:51:00.001+02:00</published><updated>2009-07-01T10:00:39.301+02:00</updated><title type='text'>How to check if an assembly has been built in DEBUG or RELEASE mode</title><content type='html'>&lt;p&gt;I found this cool code that checks if an assembly has been built in debug or release mode: &lt;a title="http://blogs.msdn.com/jb/archive/2006/06/14/631469.aspx" href="http://blogs.msdn.com/jb/archive/2006/06/14/631469.aspx"&gt;http://blogs.msdn.com/jb/archive/2006/06/14/631469.aspx&lt;/a&gt;&amp;#160; &lt;br /&gt;It compiles and runs using .NET 1.1, and thats what I used for building it.&lt;/p&gt;  &lt;p&gt;I used it on some assemblies in a solution I have, and were somewhat surprised to find that the following assemblies were reported as being debuggable:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;EPiServer.dll (version 4.62) &lt;/li&gt;    &lt;li&gt;log4net.dll &lt;/li&gt;    &lt;li&gt;Microsoft.Web.Services2.dll &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;This is probably done on purpose (to enable debugging), but it makes me wonder if my applications would run faster if the assemblies were built using Release mode.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-7977922323683336680?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/7977922323683336680/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/07/how-to-check-if-assembly-has-been-built.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7977922323683336680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7977922323683336680'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/07/how-to-check-if-assembly-has-been-built.html' title='How to check if an assembly has been built in DEBUG or RELEASE mode'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-5428179969735010010</id><published>2009-06-16T10:26:00.001+02:00</published><updated>2009-06-16T10:26:16.386+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVVM'/><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>MVVM Toolkit for WPF and Silverlight</title><content type='html'>&lt;p&gt;Laurent Bugnion has created a toolkit for creating MVVM applications. He says:&lt;/p&gt;  &lt;p&gt;“To make development of WPF and Silverlight applications according to the Model-View-ViewModel pattern easier, I have put together a small toolkit which should speed up the creation of such applications by automating certain tasks.”&lt;/p&gt;  &lt;p&gt;Here’s the URL: &lt;a title="http://geekswithblogs.net/lbugnion/archive/2009/06/14/mvvm-lsquolightrsquo-toolkit-for-wpf-and-silverlight.aspx" href="http://geekswithblogs.net/lbugnion/archive/2009/06/14/mvvm-lsquolightrsquo-toolkit-for-wpf-and-silverlight.aspx"&gt;http://geekswithblogs.net/lbugnion/archive/2009/06/14/mvvm-lsquolightrsquo-toolkit-for-wpf-and-silverlight.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-5428179969735010010?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/5428179969735010010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/06/mvvm-toolkit-for-wpf-and-silverlight.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5428179969735010010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5428179969735010010'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/06/mvvm-toolkit-for-wpf-and-silverlight.html' title='MVVM Toolkit for WPF and Silverlight'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-9200041277439852590</id><published>2009-06-03T14:09:00.001+02:00</published><updated>2009-06-03T14:09:25.336+02:00</updated><title type='text'>The Web Platform Installer</title><content type='html'>&lt;p&gt;ScottGu’s last blog post is about the Web Platform Installer: &lt;a title="http://weblogs.asp.net/scottgu/archive/2009/06/02/microsoft-web-platform-installer.aspx" href="http://weblogs.asp.net/scottgu/archive/2009/06/02/microsoft-web-platform-installer.aspx"&gt;http://weblogs.asp.net/scottgu/archive/2009/06/02/microsoft-web-platform-installer.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Looks like a very useful application for configuring your web server or web development server. It can be downloaded for free from this &lt;a title="direct link to the installer" href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;direct link to the installer&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;I also like very much that it integrates with the new Windows Web Application Gallery: &lt;a href="http://www.microsoft.com/web/gallery"&gt;www.microsoft.com/web/gallery&lt;/a&gt;. I am very likely going to use it very soon.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-9200041277439852590?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/9200041277439852590/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/06/web-platform-installer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/9200041277439852590'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/9200041277439852590'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/06/web-platform-installer.html' title='The Web Platform Installer'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-6427212584407574163</id><published>2009-05-28T17:13:00.001+02:00</published><updated>2009-06-03T14:00:19.580+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mocking'/><category scheme='http://www.blogger.com/atom/ns#' term='TDD'/><title type='text'>Are you mocking me?</title><content type='html'>&lt;p&gt;I am learning to mock :D. I understand the principle, that you can write your unit tests without any finished methods or data sources (sometimes referred to as TDD). So just looking for nice places to start with Moq. Found a couple of nice links so far:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://stephenwalther.com/blog/archive/2008/06/12/tdd-introduction-to-moq.aspx" href="http://stephenwalther.com/blog/archive/2008/06/12/tdd-introduction-to-moq.aspx"&gt;http://stephenwalther.com/blog/archive/2008/06/12/tdd-introduction-to-moq.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="http://blog.objectmentor.com/articles/2009/05/19/a-first-look-at-moq" href="http://blog.objectmentor.com/articles/2009/05/19/a-first-look-at-moq"&gt;http://blog.objectmentor.com/articles/2009/05/19/a-first-look-at-moq&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-6427212584407574163?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/6427212584407574163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/05/are-you-mocking-me.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6427212584407574163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6427212584407574163'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/05/are-you-mocking-me.html' title='Are you mocking me?'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-2319807710459495594</id><published>2009-05-14T13:35:00.001+02:00</published><updated>2009-05-14T14:08:48.967+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><category scheme='http://www.blogger.com/atom/ns#' term='nHibernate'/><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='Sharp Architecture'/><title type='text'>Getting started with S#arp Architecture</title><content type='html'>&lt;p&gt;I am trying to get started with &lt;a href="http://code.google.com/p/sharp-architecture/"&gt;S#arp Architecture&lt;/a&gt;, and I found some nice (short) videos at Dime Casts.NET:&lt;/p&gt;  &lt;p&gt;&lt;a title="Introdction to S#arp Architecture" href="http://dimecasts.net/Casts/CastDetails/75"&gt;Introdction to S#arp Architecture&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Another look at Sharp Architecture- Validation, Design Decisions and Automapping" href="http://dimecasts.net/Casts/CastDetails/97"&gt;Another look at Sharp Architecture- Validation, Design Decisions and Automapping&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="Taking a look at how to modify the T4 templates used by Sharp Architecture" href="http://dimecasts.net/Casts/CastDetails/102"&gt;Taking a look at how to modify the T4 templates used by Sharp Architecture&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I’ll be looking at them and creating my own test project. Should be good :)&lt;/p&gt;  &lt;p&gt;There should also be a good Northwind example available with the downloads from Google Code.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-2319807710459495594?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/2319807710459495594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/05/getting-started-with-sarp-architecture.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2319807710459495594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2319807710459495594'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/05/getting-started-with-sarp-architecture.html' title='Getting started with S#arp Architecture'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-3739995074641000856</id><published>2009-05-12T10:07:00.001+02:00</published><updated>2009-05-12T10:07:07.419+02:00</updated><title type='text'>Microsoft laying off 12 people in Norway</title><content type='html'>&lt;p&gt;A sad day when even MS has to start downsizing: &lt;a title="http://www.digi.no/812605/microsoft-norge-maa-nedbemanne" href="http://www.digi.no/812605/microsoft-norge-maa-nedbemanne"&gt;http://www.digi.no/812605/microsoft-norge-maa-nedbemanne&lt;/a&gt; (Norwegian). Good luck to the twelve people laid off in Norway, and to their families.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-3739995074641000856?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/3739995074641000856/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/05/microsoft-laying-off-12-people-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3739995074641000856'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3739995074641000856'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/05/microsoft-laying-off-12-people-in.html' title='Microsoft laying off 12 people in Norway'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-7384761824094825228</id><published>2009-05-08T11:19:00.001+02:00</published><updated>2009-05-08T11:32:17.695+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Transact-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>TSQL: Checking if an ID is in a Comma Separated String</title><content type='html'>&lt;p&gt;Ok, so the scenario is that we have a list of IDs, maybe from a checkboxlist, and we want to get the records that match those IDs from a table. So for the sake of this example, I just assume that the list of IDs is passed to my stored procedure as a varchar(8000) string. Using Northwind as an example database, heres an example of how an SP that gets products could look like:&lt;/p&gt;  &lt;p&gt;CREATE PROCEDURE GetProducts   &lt;br /&gt;@ListOfProductsAsCSVString varchar(8000)&lt;/p&gt;  &lt;p&gt;AS&lt;/p&gt;  &lt;p&gt;SET @ListOfProductsAsCSVString = ',' + @ListOfProductsAsCSVString + ',';&lt;/p&gt;  &lt;p&gt;SELECT ProductID, ProductName FROM Products   &lt;br /&gt;WHERE CHARINDEX(',' + CAST(ProductID as varchar(10)) + ',', @ListOfProductsAsCSVString ) &amp;gt; 0;&lt;/p&gt;  &lt;p&gt;So what I do is to first append a comma before and after the CSV-list. This is because I need to search for somthing that starts with a comma and ends with a comma, and usually a CSV-list doesn’t have a comma before the first element or after the last one. Then, in my select, I search using the CHARINDEX function for the ProductID prefixed and postfixed by a comma.&lt;/p&gt;  &lt;p&gt;Now, please be aware that this could lead to a possible SQL Injection attack, if you use this procedure uncritically without validating the input before passing it to this stored procedure, so use with caution.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-7384761824094825228?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/7384761824094825228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/05/tsql-checking-if-id-is-in-comma.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7384761824094825228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7384761824094825228'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/05/tsql-checking-if-id-is-in-comma.html' title='TSQL: Checking if an ID is in a Comma Separated String'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-1269173991898931892</id><published>2009-05-02T01:35:00.001+02:00</published><updated>2009-05-08T11:34:02.906+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>FileUpload for ASP.NET MVC 1.0</title><content type='html'>&lt;p&gt;I worked my way through the &lt;a href="http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf"&gt;free Nerd Dinner chapter&lt;/a&gt; from ASP.NET MVC 1.0, creating my own web from the example. My web is a Food Recipe application where one can search among 7000 recipes on words in the title or ingredients. &lt;/p&gt;  &lt;p&gt;The web should also be able to have pictures of the food, so I needed to do some file uploading, and so I found Scott Hanselman’s article &lt;a title="http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx" href="http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx"&gt;http://www.hanselman.com/blog/ABackToBasicsCaseStudyImplementingHTTPFileUploadWithASPNETMVCIncludingTestsAndMocks.aspx&lt;/a&gt;. I copied some of his code, and put the parts I needed into this function (the definition of the ViewDataUploadFilesResult class is in Scott’s article):&lt;/p&gt;  &lt;p&gt;private List&amp;lt;ViewDataUploadFilesResult&amp;gt; uploadFiles()    &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; var r = new List&amp;lt;ViewDataUploadFilesResult&amp;gt;(); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; foreach (string file in Request.Files)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; HttpPostedFileBase hpf = Request.Files[file] as HttpPostedFileBase;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (hpf.ContentLength == 0)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; continue;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string savedFileName = Path.Combine(     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string.Concat(AppDomain.CurrentDomain.BaseDirectory,&amp;quot;images\\upload&amp;quot;),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Path.GetFileName(hpf.FileName));     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; hpf.SaveAs(savedFileName); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; r.Add(new ViewDataUploadFilesResult()    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name = savedFileName,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Length = hpf.ContentLength     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; });     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; return r;     &lt;br /&gt;} &lt;/p&gt;  &lt;p&gt;Now, from before I had an Edit-action for the posting of my Edit View in my Controller, and from this I called the function above, as hown in the following code:&lt;/p&gt;  &lt;p&gt;[AcceptVerbs(HttpVerbs.Post)]    &lt;br /&gt;public ActionResult Edit(int id, FormCollection collection)     &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; try     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var recipe = recipeRepository.GetRecipe(id);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; recipe.RecipeDescription = Request.Form[&amp;quot;RecipeDescription&amp;quot;]; &lt;/p&gt;  &lt;p&gt;// code removed for brevity&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;ViewDataUploadFilesResult&amp;gt; fileUploaded = uploadFiles(); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (fileUploaded.Count &amp;gt; 0)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; recipe.RecipePictureUrl = Path.GetFileName(fileUploaded[0].Name); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; recipeRepository.Save();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return RedirectToAction(&amp;quot;Index&amp;quot;);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; catch     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return View();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;} &lt;/p&gt;  &lt;p&gt;I also had to make some changes to my View:&lt;/p&gt;  &lt;p&gt;First, I had to add an “enctype” to the form element. This is done like this with the Html-helper class:&lt;/p&gt;  &lt;p&gt;&amp;lt;% using (Html.BeginForm(&amp;quot;Edit&amp;quot;, &amp;quot;&amp;lt;EntityController&amp;gt;&amp;quot;, null, FormMethod.Post, new { @enctype = &amp;quot;multipart/form-data&amp;quot; })) {%&amp;gt;&lt;/p&gt;  &lt;p&gt;Second, to be able to use a FileOpen dialog, I had to add an attribute to the text box for entering the file name. In plain old ASP/Html, you would use:&lt;/p&gt;  &lt;p&gt;&amp;lt;input type=”file”&amp;gt;&lt;/p&gt;  &lt;p&gt;And that is also what we need to do here, except we need to use the Html-helper class like this:&lt;/p&gt;  &lt;p&gt;&amp;lt;%= Html.TextBox(&amp;quot;RecipePictureUrl&amp;quot;, Model.RecipePictureUrl, new { @type = &amp;quot;file&amp;quot; }) %&amp;gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-1269173991898931892?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/1269173991898931892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/05/fileupload-for-aspnet-mvc-10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1269173991898931892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1269173991898931892'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/05/fileupload-for-aspnet-mvc-10.html' title='FileUpload for ASP.NET MVC 1.0'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-8379765575895611316</id><published>2009-04-29T10:39:00.001+02:00</published><updated>2009-04-29T10:53:17.337+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Database Connectivity'/><title type='text'>The old UDL-trick: Testing Database Connection Strings</title><content type='html'>&lt;p&gt;If you have problems creating a connection string, here’s an old trick:&lt;/p&gt;  &lt;p&gt;1. Create a text file and call it for instance test.udl. It’s the file type (extension) that’s important.&lt;/p&gt;  &lt;p&gt;2. Click (double-click) on the file to open it. A “Data Link Properties” dialog box will open.&lt;/p&gt;  &lt;p&gt;3. Select the provider you want from the first tab. Click “Next”.&lt;/p&gt;  &lt;p&gt;4. Select or type the name of the server. &lt;/p&gt;  &lt;p&gt;5. Provide username and password. &lt;/p&gt;  &lt;p&gt;6. Select database. This will only be possible if the parameters provided above are correct.&lt;/p&gt;  &lt;p&gt;7. Check “Allow saving passwords”.&lt;/p&gt;  &lt;p&gt;8. Click the “Test Connection”. If you get a message box saying the test was successful, proceed to the next step.&lt;/p&gt;  &lt;p&gt;9. Close the Data Link Properties.&lt;/p&gt;  &lt;p&gt;10. Hold shift down while right clicking on the UDL-file, then select “Open with”, then select “Notepad”. &lt;/p&gt;  &lt;p&gt;Voila! You now have your connection string to be copied and used in your application.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-8379765575895611316?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/8379765575895611316/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/04/old-udl-trick-testing-database.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8379765575895611316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8379765575895611316'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/04/old-udl-trick-testing-database.html' title='The old UDL-trick: Testing Database Connection Strings'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-3313590946278223912</id><published>2009-04-27T16:51:00.001+02:00</published><updated>2009-05-19T09:02:01.466+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Using TryParse</title><content type='html'>&lt;p&gt;I just figured out a way to use int.TryParse in an if-sentence.&lt;/p&gt;  &lt;p&gt;string myInputString = myTextBox.Text;    &lt;br /&gt;int i = –1;     &lt;br /&gt;if(int.TryParse(myInputString, out i) &amp;amp;&amp;amp; i &amp;gt; 0)     &lt;br /&gt;{&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;//do cool stuff&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;This only works with the “&amp;amp;&amp;amp;” operator. If the parse fails, the second part that uses the “out” parameter from the parse, will not be run.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-3313590946278223912?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/3313590946278223912/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/04/using-tryparse.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3313590946278223912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3313590946278223912'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/04/using-tryparse.html' title='Using TryParse'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-2179313508171460126</id><published>2009-04-24T14:04:00.001+02:00</published><updated>2009-04-24T14:04:15.176+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LINQ2Objects'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ2Entities'/><category scheme='http://www.blogger.com/atom/ns#' term='Entity Framework'/><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Searching inside strings with LINQ2Objects</title><content type='html'>&lt;p&gt;I made a search form containing a button and a text box for entering multiple search words, and for excluding words by putting a dash in front of them. So at first I mixed LINQ2Entities with LINQ2Objects, and it didn’t work at all, but after converting from entities to objects (using the .ToList() method), things are working.&lt;/p&gt;  &lt;p&gt;Here’s my sample code, as always using Northwind as the database:&lt;/p&gt;  &lt;p&gt;protected void SearchButton_Click(object sender, EventArgs e)    &lt;br /&gt;{     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; using (NORTHWNDEntities context = new NORTHWNDEntities())     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string[] crit = SearchBox.Text.Split(' ');     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;string&amp;gt; included = new List&amp;lt;string&amp;gt;();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;string&amp;gt; excluded = new List&amp;lt;string&amp;gt;(); &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; for (int i = 0; i &amp;lt; crit.Length; i++)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if (crit[i].StartsWith(&amp;quot;-&amp;quot;))     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //adds the string without the dash to the excluded collection     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; excluded.Add(crit[i].Substring(1));     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //adds the string to the included collection     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; included.Add(crit[i]);     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; List&amp;lt;Products&amp;gt; products = context.Products.ToList(); //converting to objects&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; var searchResult =    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; from p in products     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; where included.Any(i =&amp;gt; p.ProductName.Contains(i))     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;amp;&amp;amp; !excluded.Any(x =&amp;gt; p.ProductName.Contains(x))     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; select p; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ProductsDataList.DataSource = searchResult;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ProductsDataList.DataBind();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;} &lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-2179313508171460126?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/2179313508171460126/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/04/searching-inside-strings-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2179313508171460126'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2179313508171460126'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/04/searching-inside-strings-with.html' title='Searching inside strings with LINQ2Objects'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-6112633144269915317</id><published>2009-04-23T11:07:00.001+02:00</published><updated>2009-04-29T09:15:09.222+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVVM'/><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET'/><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>ASP.NET MVC + Silverlight? Try MVVM + Silverlight in stead!</title><content type='html'>&lt;p&gt;I have been thinking about how it would be cool to use the new ASP.NET MVC project type with Silverlight as the “View”, and a quick google gives some interesting results.&lt;/p&gt;  &lt;p&gt;Some attempts have been made to use Silverlight as the view in MVC:&lt;/p&gt;  &lt;p&gt;In this one &lt;a title="http://timheuer.com/blog/archive/2009/02/09/silverlight-as-a-view-in-aspnet-mvc.aspx" href="http://timheuer.com/blog/archive/2009/02/09/silverlight-as-a-view-in-aspnet-mvc.aspx"&gt;http://timheuer.com/blog/archive/2009/02/09/silverlight-as-a-view-in-aspnet-mvc.aspx&lt;/a&gt; the approach is to start with a Silverlight application, and then select ASP.NET MVC as the container-web for the Silverlight views. But it seems that this approach has some problems (just read the comments).&lt;/p&gt;  &lt;p&gt;In this approach &lt;a title="http://blogs.msdn.com/jowardel/archive/2009/03/09/asp-net-mvc-silverlight.aspx" href="http://blogs.msdn.com/jowardel/archive/2009/03/09/asp-net-mvc-silverlight.aspx"&gt;http://blogs.msdn.com/jowardel/archive/2009/03/09/asp-net-mvc-silverlight.aspx&lt;/a&gt;, one starts out with an MVC web project, and then put Silverligh controls into the views. This solution is not usable, because it relies on using a property (some parameters) that is no longer accessible in the release version of MVC.&lt;/p&gt;  &lt;p&gt;The solution is: Don’t use MVC, Use MVVM!   &lt;br /&gt;From the comments from the first one, it seems MVVM (&lt;a title="http://msdn.microsoft.com/nb-no/magazine/dd458800(en-us).aspx" href="http://msdn.microsoft.com/nb-no/magazine/dd458800(en-us).aspx"&gt;http://msdn.microsoft.com/nb-no/magazine/dd458800(en-us).aspx&lt;/a&gt;) is the way to go (Model-View-ViewModel).&lt;/p&gt;  &lt;p&gt;Jonas Follesøe also have some good stuff:   &lt;br /&gt;&lt;a title="http://jonas.follesoe.no/YouCardRevisitedImplementingDependencyInjectionInSilverlight.aspx" href="http://jonas.follesoe.no/YouCardRevisitedImplementingDependencyInjectionInSilverlight.aspx"&gt;http://jonas.follesoe.no/YouCardRevisitedImplementingDependencyInjectionInSilverlight.aspx&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And this discussion provides some good links:   &lt;br /&gt;&lt;a title="http://stackoverflow.com/questions/375301/should-i-use-the-model-view-viewmodel-mvvm-pattern-in-silverlight-projects" href="http://stackoverflow.com/questions/375301/should-i-use-the-model-view-viewmodel-mvvm-pattern-in-silverlight-projects"&gt;http://stackoverflow.com/questions/375301/should-i-use-the-model-view-viewmodel-mvvm-pattern-in-silverlight-projects&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-6112633144269915317?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/6112633144269915317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/04/aspnet-mvc-silverlight.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6112633144269915317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6112633144269915317'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/04/aspnet-mvc-silverlight.html' title='ASP.NET MVC + Silverlight? Try MVVM + Silverlight in stead!'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-7554685114972974271</id><published>2009-04-22T14:26:00.001+02:00</published><updated>2009-04-24T14:10:11.430+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LINQ2SQL'/><title type='text'>The fate of Linq2SQL</title><content type='html'>&lt;p&gt;The fate of Linq2SQL: &lt;a href="http://tinyurl.com/5kcvzd"&gt;http://tinyurl.com/5kcvzd&lt;/a&gt; is it dead or not? Only the future can tell, I guess...&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-7554685114972974271?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/7554685114972974271/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/04/fate-of-linq2sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7554685114972974271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7554685114972974271'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/04/fate-of-linq2sql.html' title='The fate of Linq2SQL'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-6988155008214617323</id><published>2009-04-20T12:03:00.001+02:00</published><updated>2009-04-24T19:48:31.806+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utils'/><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>SendHttpRequest</title><content type='html'>&lt;p&gt;I made a little console application using .NET 1.1, that sends a request to an address given as parameter. It is to be used to simulate traffic on a web site. Probably could use some refinement of the code (just consider it my alpha, and that there will be no beta, RTM, etc.).&lt;/p&gt;  &lt;p&gt;using System;   &lt;br /&gt;using System.Web;    &lt;br /&gt;using System.IO;    &lt;br /&gt;using System.Net; &lt;/p&gt;  &lt;p&gt;namespace SendHttpRequest   &lt;br /&gt;{    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// Summary description for Class1.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; class EntryPoint    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// The main entry point for the application.    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /// &amp;lt;/summary&amp;gt;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; [STAThread]    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; static void Main(string[] args)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(args.Length &amp;gt; 0)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string url = args[0]; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Uri uri = null;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; try    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; uri = new Uri(url);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; catch    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(&amp;quot;Invalid URL. No request sent.&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; } &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WebRequest request = WebRequest.Create(uri);   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; request.Method = &amp;quot;GET&amp;quot;; &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; WebResponse response = null;   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; try    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; response = request.GetResponse();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; StreamReader rdr = new StreamReader(response.GetResponseStream());    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; string content = rdr.ReadToEnd();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(content);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; catch (Exception ex)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&amp;#160;&amp;#160;&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(ex.Message);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; return;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; else    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Console.WriteLine(&amp;quot;Usage: SendHttpRequest {url}&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-6988155008214617323?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/6988155008214617323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/04/sendhttprequest.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6988155008214617323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6988155008214617323'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/04/sendhttprequest.html' title='SendHttpRequest'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-7730626685080490013</id><published>2009-04-14T14:40:00.001+02:00</published><updated>2009-04-24T14:11:11.607+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>ScottGu's Silverlight 2.0 Tutorial</title><content type='html'>&lt;p&gt;I am trying to work my way through Scott Gu's &lt;a href="http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-3-using-networking-to-retrieve-data-and-populate-a-datagrid.aspx"&gt;http://weblogs.asp.net/scottgu/pages/silverlight-tutorial-part-3-using-networking-to-retrieve-data-and-populate-a-datagrid.aspx&lt;/a&gt; tutorial. &lt;/p&gt;  &lt;p&gt;The tutorial contacts a service using a WebClient. &lt;/p&gt;  &lt;p&gt;Someone called David has posted a question regarding him getting the error &amp;quot;The remote server returned an error: (403) Forbidden.&amp;quot;. &lt;/p&gt;  &lt;p&gt;The answer to the question is to add this line: Service.Headers.Add(&amp;quot;user-agent&amp;quot;, &amp;quot;Silverlight Sample App&amp;quot;); &lt;/p&gt;  &lt;p&gt;However, the Headers have no &amp;quot;Add&amp;quot; method any more: &lt;a href="http://msdn.microsoft.com/en-us/library/system.net.webheadercollection_members(VS.95).aspx"&gt;http://msdn.microsoft.com/en-us/library/system.net.webheadercollection_members(VS.95).aspx&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;In stead I think you need to use the bold italic line in the source below:&lt;/p&gt;  &lt;pre&gt;        private void SearchBtn_Click(object sender, RoutedEventArgs e)&lt;br /&gt;        {&lt;br /&gt;            string topic = txtSearchTopic.Text;&lt;br /&gt;            string diggUrl = string.Format(&amp;quot;http://services.digg.com/stories/topic/{0}&amp;quot;, topic);&lt;br /&gt;&lt;br /&gt;            WebClient diggService = new WebClient();&lt;br /&gt;            diggService.DownloadStringCompleted += new DownloadStringCompletedEventHandler(diggService_DownloadStringCompleted);&lt;br /&gt;            &lt;strong&gt;&lt;em&gt;diggService.Headers[HttpRequestHeader.UserAgent] = &amp;quot;&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;&lt;em&gt;Silverlight Sample App&amp;quot;;&lt;br /&gt;&lt;/em&gt;&lt;/strong&gt;            diggService.DownloadStringAsync(new Uri(diggUrl));&lt;br /&gt;        }&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;But this doesn't work either, because UserAgent is a restricted header that cannot be set. Attempting to set it will throw an exception:&lt;br /&gt;  &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.net.webheadercollection(VS.95).aspx"&gt;http://msdn.microsoft.com/en-us/library/system.net.webheadercollection(VS.95).aspx&lt;/a&gt; &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;So is there any way of making the tutorial work? Am I barking up the wrong tree? If I find out I'll post the answer :)&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-7730626685080490013?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/7730626685080490013/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/04/scottgu-silverlight-20-tutorial.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7730626685080490013'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7730626685080490013'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/04/scottgu-silverlight-20-tutorial.html' title='ScottGu&amp;#39;s Silverlight 2.0 Tutorial'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-424141678303128008</id><published>2009-04-14T11:23:00.001+02:00</published><updated>2009-04-24T14:08:01.832+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MVC'/><category scheme='http://www.blogger.com/atom/ns#' term='ASP.NET MVC'/><title type='text'>ASP.NET MVC 1.0</title><content type='html'>&lt;p&gt;Rob Conery, Scott Hanselman, Phil Haack and Scott Guthrie have come up with a book on the Model-View-Controller framework, and the first chapter describes building a simple web site using the framework. &lt;/p&gt;  &lt;p&gt;The chapter is free and can be downloaded from this link: &lt;a title="http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf" href="http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf"&gt;http://aspnetmvcbook.s3.amazonaws.com/aspnetmvc-nerdinner_v1.pdf&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The example web site is on the net: &lt;a href="http://www.nerddinner.com"&gt;http://www.nerddinner.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;David Hayden has blogged about the book here: &lt;a title="http://davidhayden.com/blog/dave/archive/2009/03/11/AnotherASPNETMVCSampleApplicationEBookTutorialNerddinner.aspx" href="http://davidhayden.com/blog/dave/archive/2009/03/11/AnotherASPNETMVCSampleApplicationEBookTutorialNerddinner.aspx"&gt;http://davidhayden.com/blog/dave/archive/2009/03/11/AnotherASPNETMVCSampleApplicationEBookTutorialNerddinner.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-424141678303128008?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/424141678303128008/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/04/aspnet-mvc-10.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/424141678303128008'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/424141678303128008'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/04/aspnet-mvc-10.html' title='ASP.NET MVC 1.0'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-5526379682599631578</id><published>2009-03-25T16:18:00.001+01:00</published><updated>2009-04-24T14:24:10.910+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Silverlight'/><title type='text'>Creating your first Silverlight 2.0 application</title><content type='html'>&lt;p&gt;Good article with some videos that show you how to get started with Silverlight 2.0 in Visual Studio 2008: &lt;a title="http://visualstudiomagazine.com/columns/article.aspx?editorialsid=2644" href="http://visualstudiomagazine.com/columns/article.aspx?editorialsid=2644"&gt;http://visualstudiomagazine.com/columns/article.aspx?editorialsid=2644&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-5526379682599631578?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/5526379682599631578/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/03/creating-your-first-silverlight-20.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5526379682599631578'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5526379682599631578'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/03/creating-your-first-silverlight-20.html' title='Creating your first Silverlight 2.0 application'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-1086987192873829923</id><published>2009-03-25T09:03:00.002+01:00</published><updated>2009-04-24T14:33:17.877+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Best Practices'/><category scheme='http://www.blogger.com/atom/ns#' term='Architecture'/><title type='text'>Microsoft Patterns and Practices: Application Architecture Guide 2.0a</title><content type='html'>&lt;p&gt;I came across this excellent book while surfing yesterday: Application Architecture Guide 2.0a. It seems to be very good, taking into consideration most of the aspects of an application Architecture. It has a &amp;quot;Fast Track&amp;quot; chapter that summarises different patterns and practices, and when to use what. This chapter has references to the other chapters if one needs to go deeper in.&lt;/p&gt;  &lt;p&gt;Best of all: the book is free! The book can be downloaded as PDF from CodePlex: &lt;a title="http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=20586" href="http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=20586"&gt;http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=20586&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I just discovered that there is a presentation available that summarises much of the book: &lt;a title="http://apparch.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=17700" href="http://apparch.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=17700"&gt;http://apparch.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=17700&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The book may be a little outdated with regards to the latest developments in O/RM (Entity Framework / NHibernate etc.) and maybe some other places as well, but it gives an excellent overview, and tries to be technology-agnostic.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-1086987192873829923?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/1086987192873829923/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/03/microsoft-patterns-and-practices.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1086987192873829923'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1086987192873829923'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/03/microsoft-patterns-and-practices.html' title='Microsoft Patterns and Practices: Application Architecture Guide 2.0a'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-2137860139893906472</id><published>2009-03-24T09:20:00.001+01:00</published><updated>2009-03-24T09:20:27.053+01:00</updated><title type='text'>Entity Framework episodes on DNRTV!</title><content type='html'>&lt;p&gt;Intro/getting started:&lt;br&gt;&lt;a title="http://www.dnrtv.com/default.aspx?showNum=117" href="http://www.dnrtv.com/default.aspx?showNum=117"&gt;http://www.dnrtv.com/default.aspx?showNum=117&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Using EF with applications:&lt;br&gt;&lt;a href="http://www.dnrtv.com/default.aspx?showNum=118"&gt;http://www.dnrtv.com/default.aspx?showNum=118&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-2137860139893906472?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/2137860139893906472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/03/entity-framework-episodes-on-dnrtv.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2137860139893906472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2137860139893906472'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/03/entity-framework-episodes-on-dnrtv.html' title='Entity Framework episodes on DNRTV!'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-1659638365742316425</id><published>2009-03-21T22:28:00.006+01:00</published><updated>2009-04-24T19:53:48.859+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='LINQ'/><title type='text'>Linq Flavors</title><content type='html'>&lt;h3&gt;&amp;nbsp;&lt;/h3&gt; &lt;p&gt;I am reading up on Linq, and see that there are a few types of Linq implementations. like for instance LinqToSharePoint or Linq ToFlickr. Reading this makes me think of a few other that could be useful:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;LinqToWikipedia - for querying for information in an application &lt;li&gt;LinqToLiveSearch (…or Google?)  &lt;li&gt;LinqToFacebook  &lt;li&gt;LinqToLiveEarth (... or Google Maps) - for finding places&lt;/li&gt;&lt;/ul&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-1659638365742316425?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/1659638365742316425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/03/linq-flavors.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1659638365742316425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1659638365742316425'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/03/linq-flavors.html' title='Linq Flavors'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-2291210043305466829</id><published>2009-01-16T15:58:00.005+01:00</published><updated>2009-04-24T19:57:00.656+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>Mapping Cargos to Objects returned from a Web Service using Reflection</title><content type='html'>&lt;p&gt;&lt;strong&gt;Background:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;When working with webservices, we wanted to use a common library of cargo objects that would be used for sending data between the tiers of the application. The Middleware tier has all the web references, and also has methods that encapsulate the web references objects, essentially wrapping them to common cargo objects. After all, we would not like to have dependencies to types that are defined in the auto-generated web service proxies.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;One way:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;One way of creating the cargo objects is to copy the code for the classes from the Reference.cs file into the common cargo objects assembly. Then you could wrap the objects from the web service dependent object to the common cargo objects which would then be passed to the application tier.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;It's a lot of work to type all the code for wrapping the objects...&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Solution:&lt;/strong&gt;&lt;/p&gt; &lt;p&gt;Since the cargo objects have the same properties as the web service proxy objects with the same names, it is possible to do the wrapping by using reflection, for instance using a method like this:&lt;/p&gt; &lt;p&gt;&lt;span style="font-family: courier new"&gt;&lt;pre&gt;private void wrapToCargo&amp;lt;T,U&amp;gt;(T source, U cargo)&lt;br&gt;{&lt;br&gt;  //Gets all properties from the source object...&lt;br&gt;  PropertyInfo[] props = source.GetType().GetProperties();&lt;br&gt;  //Loops the properties...&lt;br&gt;  for(int i = 0; i &amp;lt; props.Length; i++)&lt;br&gt;  {&lt;br&gt;    //Checks if a property with the same name is present on both the source and the cargo,&lt;br&gt;    // and if the property is writeable.&lt;br&gt;    string name = props[i].Name;&lt;br&gt;    if (source.GetType().GetProperty(name) != null &amp;amp;&amp;amp; cargo.GetType().GetProperty(name) != null &amp;amp;&amp;amp; cargo.GetType().GetProperty(name).CanWrite)&lt;br&gt;    {&lt;br&gt;      //If so, set value of the cargo property to the value of the source property.&lt;br&gt;      cargo.GetType().GetProperty(props[i].Name).SetValue(cargo, source.GetType().GetProperty(props[i].Name).GetValue(source, null), null);&lt;br&gt;    }&lt;br&gt;  }&lt;br&gt;}&lt;/pre&gt;&lt;/span&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Alas, this generic way of wrapping cargos comes at a cost. I would suggest that one should wrap from the target (loop through properties of the target, then match with properties belonging to the source object) in stead of the source as shown above, because you will have more control of what fields should be mapped.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-2291210043305466829?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/2291210043305466829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/01/wrapping-web-service-response-to-cargo.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2291210043305466829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2291210043305466829'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/01/wrapping-web-service-response-to-cargo.html' title='Mapping Cargos to Objects returned from a Web Service using Reflection'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-3547578965953173583</id><published>2009-01-13T16:17:00.001+01:00</published><updated>2009-04-24T19:56:31.835+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='OpenSource'/><title type='text'>Lots of cool stuff at SourceForge!</title><content type='html'>&lt;p&gt;I just discovered that SourceForge has a softwaremap at &lt;a href="http://sourceforge.net/softwaremap"&gt;http://sourceforge.net/softwaremap&lt;/a&gt; with lots and lots of cool downloads.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-3547578965953173583?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/3547578965953173583/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/01/lots-of-cool-stuff-at-sourceforge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3547578965953173583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3547578965953173583'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/01/lots-of-cool-stuff-at-sourceforge.html' title='Lots of cool stuff at SourceForge!'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-8731463317651357091</id><published>2009-01-12T09:34:00.001+01:00</published><updated>2009-04-24T19:54:23.000+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Transact-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>xp_ReadErrorLog (SQL 2005)</title><content type='html'>&lt;p&gt;The xp_ReadErrorLog extended stored procedure allows you to display the logs for SQL Server 2005 amnd also (as it turns out) the logs for SQl Server Agent.&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;br&gt;xp_ReadErrorLog - shows the default log for SQL Server.&lt;br&gt;xp_ReadErrorLog 0,2 - shows the error log for SQL Server Agent (the second parameter means "Agent")&lt;/p&gt; &lt;p&gt;&lt;strong&gt;Parameters:&lt;br&gt;&lt;/strong&gt;1 (int): Log Number&lt;br&gt;2 (int): 1 = SQL Server, 2 = SQL Server Agent&lt;br&gt;3 (string): Search string for searching for a log entry.&lt;br&gt;4 (string): Another search string.&lt;/p&gt; &lt;p&gt;Source: &lt;a href="http://www.sqlteam.com/article/using-xp_readerrorlog-in-sql-server-2005"&gt;SQLTeam.com&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-8731463317651357091?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/8731463317651357091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2009/01/xpreaderrorlog-sql-2005.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8731463317651357091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8731463317651357091'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2009/01/xpreaderrorlog-sql-2005.html' title='xp_ReadErrorLog (SQL 2005)'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-5249198206890078443</id><published>2008-07-21T14:53:00.001+02:00</published><updated>2009-04-24T19:54:40.216+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Update 'GDR 3068 for SQL Server Database Services 2005 ENU (KB948109)' could not be installed. Error code 1603.</title><content type='html'>&lt;p&gt;I noticed that my local SQL Server (2005, Standard Edition) was not started every day when I came to work, so I checked the event log, and found the error message from the title of this posting. Seems that there is a bug somewhere that prevents an update from being installed. There is a workaround at this address: &lt;a title="http://support.microsoft.com/kb/925976" href="http://support.microsoft.com/kb/925976"&gt;http://support.microsoft.com/kb/925976&lt;/a&gt; .&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-5249198206890078443?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/5249198206890078443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/07/update-3068-for-sql-server-database.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5249198206890078443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5249198206890078443'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/07/update-3068-for-sql-server-database.html' title='Update &amp;#39;GDR 3068 for SQL Server Database Services 2005 ENU (KB948109)&amp;#39; could not be installed. Error code 1603.'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-6073986403533844810</id><published>2008-07-16T13:32:00.001+02:00</published><updated>2009-04-24T19:57:21.172+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Documentation'/><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Sandcastle'/><title type='text'>SandcastleGUI</title><content type='html'>&lt;p&gt;I started using Sandcastle just a few days ago, and it was not very userfriendly, since it is a collection of command line utilities. Hence, I started looking for a GUI for Sandcastle, and found one at: &lt;a href="http://www.inchl.nl/SandcastleGUI"&gt;http://www.inchl.nl/SandcastleGUI&lt;/a&gt; .&lt;/p&gt; &lt;p&gt;It's quite easy to use, and I was quite happy with it. I then started to create a web with documentation for one of my projects, and ran into some problems. It seems Sandcastle has problems with some long names, resulting in linebreaks in a file called "filetitles.js". This results in a javascript error saying something about unterminated string constants.&lt;/p&gt; &lt;p&gt;Thats why I created a small utility for fixing that file: FixFiletitlesJs.exe. Here's the code for my little utility (Console application):&lt;/p&gt; &lt;p&gt;&lt;font face="Courier New"&gt;using System;&lt;br&gt;using System.Collections.Generic;&lt;br&gt;using System.Text;&lt;br&gt;using System.Text.RegularExpressions;&lt;br&gt;using System.IO; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New"&gt;namespace FixFileTitlesJs&lt;br&gt;{&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class Program&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; static void Main(string[] args)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (args.Length == 0 || (args.Length &amp;gt; 0 &amp;amp;&amp;amp; args[0] == "?"))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("USAGE: fixfiletitlesjs filename [Y | N]");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string filename = args[0]; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //creates a new filname by replacing ".js" at the end of the filename with ".bak"&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string backupFilename = Regex.Replace(filename, @"\.js$", ".bak");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //create a backup file&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; FileInfo fi = new FileInfo(filename);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fi.MoveTo(backupFilename);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (FileNotFoundException)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine("File not found.");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(string.Format("An exception was thrown while accessing the file: {0}", ex.Message));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StreamWriter sw = null;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sw = File.CreateText(filename);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(string.Format("An exception was thrown while accessing the file: {0}", ex.Message));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; StreamReader sr = null;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sr = File.OpenText(backupFilename);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; catch (Exception ex)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(string.Format("An exception was thrown while accessing the file: {0}", ex.Message));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.ReadLine();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; int i = 0,j = 0, k = 0;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!sr.EndOfStream)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string line = sr.ReadLine();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Regex rx = new Regex("\",$");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (!sr.EndOfStream &amp;amp;&amp;amp; !rx.IsMatch(line) &amp;amp;&amp;amp; i &amp;gt; 0)&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; line += sr.ReadLine();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; j++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; k++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sw.WriteLine(line);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i++;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sw.Close();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sr.Close(); &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; //write result&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(string.Format("Original file renamed to: {0}", backupFilename));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(string.Format("New file created with original name: {0}", filename));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(string.Format("Number of lines read from source: {0}", j));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(string.Format("Number of lines written to destination: {0}", i));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(string.Format("Number of concatenations of lines done: {0}", k));&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.WriteLine(); &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; string reply = string.Empty; &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (args.Length &amp;gt;= 2 &amp;amp;&amp;amp; !string.IsNullOrEmpty(args[1]))&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reply = args[1];&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; while (reply.ToLower() != "y" &amp;amp;&amp;amp; reply.ToLower() != "n")&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (reply != string.Empty) Console.WriteLine("You must answer Y or N.");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Console.Write("Would you like to delete the backup of the original file (y/n)?");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; reply = Console.ReadLine();&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } &lt;/font&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (reply.ToLower() == "y") File.Delete(backupFilename);&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;}&lt;/font&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-6073986403533844810?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/6073986403533844810/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/07/sandcastlegui.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6073986403533844810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6073986403533844810'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/07/sandcastlegui.html' title='SandcastleGUI'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-1983119693274949417</id><published>2008-07-01T08:53:00.001+02:00</published><updated>2009-04-24T19:57:52.015+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Using MARS with SQL Native Client</title><content type='html'>&lt;p&gt;I tried using the example code from this article &lt;a href="http://blogs.msdn.com/sqlnativeclient/archive/2006/09/27/774290.aspx"&gt;http://blogs.msdn.com/sqlnativeclient/archive/2006/09/27/774290.aspx&lt;/a&gt;&amp;nbsp; but I hade some trouble. Seems that you cannot use the System.Data.SqlClient to access MARS because it does not support using a Provider or the keyword "MARS Connection" in the connection string. This means you have to use an ADODB Connection.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-1983119693274949417?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/1983119693274949417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/07/using-mars-with-sql-native-client.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1983119693274949417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1983119693274949417'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/07/using-mars-with-sql-native-client.html' title='Using MARS with SQL Native Client'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-7328495045845579914</id><published>2008-06-10T16:04:00.001+02:00</published><updated>2009-04-24T19:58:23.930+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='EPiServer'/><title type='text'>Javascript error in EPiServer admin mode ('Invalid argument')</title><content type='html'>&lt;p&gt;In &lt;a href="http://www.episerver.com/en/EPiServer_Knowledge_Center/Developer-Forum2/EPiServer-Developer-Forums-/1556/12935"&gt;this posting&lt;/a&gt;, Mark Bagnall describes a problem with javascript in EPiServer Edit Mode. I had the same problem. It was not possible to expand any branches in the EditTree, and the web browser reported a javascript error. Turned out I had set up my website in IIS with Windows Authentication only, to enable debugging/stepping in Visual Studio. The problem was fixed by allowing "Anonymous" access.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-7328495045845579914?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/7328495045845579914/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/06/javascript-error-in-episerver-admin.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7328495045845579914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7328495045845579914'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/06/javascript-error-in-episerver-admin.html' title='Javascript error in EPiServer admin mode (&amp;#39;Invalid argument&amp;#39;)'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-6190543685419825</id><published>2008-05-20T09:18:00.001+02:00</published><updated>2009-04-24T19:58:47.435+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Transact-SQL'/><title type='text'>T-SQL CONVERT datetime to varchar</title><content type='html'>&lt;p&gt;This script gets current date, and converts it using all existing predefined formats between 1 and 255:&lt;/p&gt; &lt;p&gt;DECLARE @format int;&lt;br&gt;CREATE TABLE #temp (format int NULL, string varchar(20) NULL, date datetime NULL)&lt;br&gt;SET @format = 1;&lt;br&gt;WHILE @format &amp;lt; 256&lt;br&gt;BEGIN&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEGIN TRY&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; INSERT INTO #temp (format, string, date) VALUES(@format, CONVERT(varchar(20),getdate(),@format), getdate());&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END TRY &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEGIN CATCH&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; END CATCH&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SET @format = @format + 1;&lt;br&gt;END&lt;br&gt;SELECT * FROM #temp;&lt;br&gt;DROP TABLE #temp;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-6190543685419825?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/6190543685419825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/05/t-sql-convert-datetime-to-varchar.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6190543685419825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6190543685419825'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/05/t-sql-convert-datetime-to-varchar.html' title='T-SQL CONVERT datetime to varchar'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-1733795546869093462</id><published>2008-05-15T14:10:00.003+02:00</published><updated>2009-04-24T20:00:07.335+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPath'/><category scheme='http://www.blogger.com/atom/ns#' term='Transact-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>SQL Server 2005 XML - Msg 9402 (unable to switch the encoding)</title><content type='html'>&lt;p&gt;Had a problem converting XML from a column of type text to type xml. Someone else luckily has had the same problem: &lt;a title="http://devio.wordpress.com/2008/03/04/retrieving-xml-data-in-sql-server-2005/" href="http://devio.wordpress.com/2008/03/04/retrieving-xml-data-in-sql-server-2005/"&gt;&lt;br&gt;http://devio.wordpress.com/2008/03/04/retrieving-xml-data-in-sql-server-2005/&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;The solution was to convert the column from type TEXT to NVARCHAR(max), and get rid of the "encoding" part of the root tag, something like this (slightly altered from the example mentioned above):&lt;br&gt;&lt;br&gt;SELECT ID, CAST(&lt;br&gt;REPLACE(CAST(XmlTextColumn AS NVARCHAR(MAX)), 'encoding="UTF-16"', '')&lt;br&gt;AS XML).query('xpath to nodes') AS Node&lt;br&gt;FROM TableName&lt;/p&gt; &lt;p&gt;Another way to solve this problem is by adding a computed XML column:&lt;/p&gt; &lt;p&gt;ALTER TABLE [MyTable]&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ADD MyXMLColumn AS CAST(REPLACE(CAST(MyXMLStoredAsText AS NVARCHAR(MAX)), 'encoding="UTF-16"', '') AS XML) &lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; PERSISTED &lt;p&gt;If you add the persisted option, the value will be persisted with the table data, which will give better performance for read operations (slightly worse performance for insert/update operations).&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-1733795546869093462?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/1733795546869093462/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/05/sql-server-2005-xml-msg-9402-unable-to.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1733795546869093462'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1733795546869093462'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/05/sql-server-2005-xml-msg-9402-unable-to.html' title='SQL Server 2005 XML - Msg 9402 (unable to switch the encoding)'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-7955765916553665116</id><published>2008-05-07T07:53:00.001+02:00</published><updated>2009-04-24T20:00:45.585+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='TFS'/><title type='text'>TFS Workspace Mapping</title><content type='html'>&lt;p&gt;I was getting this error: The Path &amp;lt;local path&amp;gt; is already mapped in workspace &amp;lt;machine name [old tfs server]&amp;gt;&lt;/p&gt; &lt;p&gt;Turns out workspaces are cached locally and settings are found in: &amp;lt;DRIVE&amp;gt;:\Documents and Settings\&amp;lt;USER ID&amp;gt;\Local Settings\Application Data\Microsoft\Team Foundation\1.0\Cache.&lt;/p&gt; &lt;p&gt;To fix my problem I opened the VS 2005 Command Prompt and entered: "tf workspaces /remove:*" which removed all my cached workspaces (refer to &lt;a title="http://msdn.microsoft.com/en-us/library/54dkh0y3.aspx" href="http://msdn.microsoft.com/en-us/library/54dkh0y3.aspx"&gt;http://msdn.microsoft.com/en-us/library/54dkh0y3.aspx&lt;/a&gt; for full description of the Workspaces Command). This also cleared most of the content from the earlier mentioned file in the users Documents and Settings.&lt;/p&gt; &lt;p&gt;Then, of course, I had to create a new workspace using VS 2005.&lt;/p&gt; &lt;p&gt;Source: &lt;a title="http://geekswithblogs.net/aaronsblog/archive/2006/09/11/90878.aspx" href="http://geekswithblogs.net/aaronsblog/archive/2006/09/11/90878.aspx"&gt;http://geekswithblogs.net/aaronsblog/archive/2006/09/11/90878.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-7955765916553665116?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/7955765916553665116/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/05/tfs-workspace-mapping.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7955765916553665116'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7955765916553665116'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/05/tfs-workspace-mapping.html' title='TFS Workspace Mapping'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-5563105321869874676</id><published>2008-04-25T14:50:00.001+02:00</published><updated>2008-04-25T14:50:27.747+02:00</updated><title type='text'>.NET 2.0 transaction model</title><content type='html'>&lt;p&gt;How to handle transactions using ASP.NET 2.0 and SqlClient. Nice article &lt;a href="http://www.simple-talk.com/dotnet/.net-framework/.net-2.0-transaction-model/"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-5563105321869874676?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/5563105321869874676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/04/net-20-transaction-model.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5563105321869874676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/5563105321869874676'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/04/net-20-transaction-model.html' title='.NET 2.0 transaction model'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-7723377035322190569</id><published>2008-04-07T15:50:00.001+02:00</published><updated>2008-04-07T15:50:31.623+02:00</updated><title type='text'>Serialization of IDictionary objects</title><content type='html'>&lt;p&gt;By design, objects that implement IDictionary (Hashtable, SortedList, ListDictionary, or HybridDictionary) cannot be serialized. This Q&amp;amp;A describes a way of making these objects serializable by using (a "hidden hook"), and implementing IXmlSerializable: &lt;a title="http://msdn2.microsoft.com/en-us/magazine/cc164135.aspx" href="http://msdn2.microsoft.com/en-us/magazine/cc164135.aspx"&gt;http://msdn2.microsoft.com/en-us/magazine/cc164135.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-7723377035322190569?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/7723377035322190569/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/04/serialization-of-idictionary-objects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7723377035322190569'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7723377035322190569'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/04/serialization-of-idictionary-objects.html' title='Serialization of IDictionary objects'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-8881747610565539861</id><published>2008-04-03T10:30:00.001+02:00</published><updated>2009-04-24T20:00:07.335+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPath'/><category scheme='http://www.blogger.com/atom/ns#' term='Transact-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Using SQL Server 2005 XML and CROSS APPLY</title><content type='html'>&lt;p&gt;In my &lt;a href="http://stgaup.blogspot.com/2008/03/using-sql-server-2005-xml-and-unpivot.html"&gt;last blog entry&lt;/a&gt;, I used the UNPIVOT operator to get a table with products from an XML type column which were displayed as columns, to display the columns as rows. As fun as that was, it was not really a practical approach, more a way of showing how the UNPIVOT operator works.&lt;/p&gt; &lt;p&gt;To get a similar result, without using UNPIVOT, using in stead the values() function with the CROSS APPLY operator, we could use this query:&lt;/p&gt; &lt;p&gt;SELECT &lt;br&gt;ContractNumber,&lt;br&gt;col.value('Name[1]', 'nvarchar(50)') AS ProductName&lt;br&gt;FROM Contract&lt;br&gt;CROSS APPLY contractXML.nodes('Contract/Order/OrderItem') AS x(col)  &lt;p&gt;This could give a table like this if there were only one contract in the table with ContractNumber = 1: &lt;br&gt;&lt;/p&gt; &lt;table cellspacing="0" cellpadding="2" width="400" border="1"&gt; &lt;tbody&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;&lt;strong&gt;ContractNumber&lt;/strong&gt;&lt;/td&gt; &lt;td valign="top" width="198"&gt;&lt;strong&gt;ProductName&lt;/strong&gt;&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;1&lt;/td&gt; &lt;td valign="top" width="198"&gt;Product 1&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;1&lt;/td&gt; &lt;td valign="top" width="198"&gt;Product 1&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt; &lt;td valign="top" width="200"&gt;1&lt;/td&gt; &lt;td valign="top" width="198"&gt;Product 2&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt; &lt;p&gt;&lt;br&gt;The nodes() function returns a table "x" with one column "col". &lt;/p&gt; &lt;p&gt;The CROSS APPLY operator joins the result from a table-valued function with the result of an "ordinary" query. This is like a LEFT JOIN, only against a table returned by a function in stead of another table.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-8881747610565539861?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/8881747610565539861/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/04/using-sql-server-2005-xml-and-cross.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8881747610565539861'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8881747610565539861'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/04/using-sql-server-2005-xml-and-cross.html' title='Using SQL Server 2005 XML and CROSS APPLY'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-6005837636254338137</id><published>2008-03-10T15:25:00.001+01:00</published><updated>2009-04-24T14:17:35.806+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='XPath'/><category scheme='http://www.blogger.com/atom/ns#' term='Transact-SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server'/><title type='text'>Using SQL Server 2005 XML And Unpivot</title><content type='html'>&lt;p&gt;I have a table with contracts stored as XML. Using the XML query possibilities in SQL Server 2005 together with the UNPIVOT keyword I can get statistics on different types of contracts.&lt;/p&gt;  &lt;p&gt;My table has these columns:   &lt;br /&gt;ContractNumber int (Primary Key)    &lt;br /&gt;contractXML xml    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;My XML looks something like like this, and is stored in a column of type XML:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;Contract&amp;gt;       &lt;br /&gt;&amp;#160; &amp;lt;Customer&amp;gt;        &lt;br /&gt;&amp;#160; ...        &lt;br /&gt;&amp;#160; &amp;lt;/Customer&amp;gt;&lt;/font&gt;&lt;font face="Courier New"&gt;       &lt;br /&gt;&amp;#160; &amp;lt;Order&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;OrderItem&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Name&amp;gt;Product1&amp;lt;/Name&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Price&amp;gt;123.00&amp;lt;/Price&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/OrderItem&amp;gt;        &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;OrderItem&amp;gt;       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Name&amp;gt;Product1&amp;lt;/Name&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Price&amp;gt;123.00&amp;lt;/Price&amp;gt;        &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/OrderItem&amp;gt;        &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font face="Courier New"&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;OrderItem&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Name&amp;gt;Product3&amp;lt;/Name&amp;gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Price&amp;gt;13.00&amp;lt;/Price&amp;gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/OrderItem&amp;gt;            &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;OrderItem&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Name&amp;gt;Product2&amp;lt;/Name&amp;gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Price&amp;gt;23.00&amp;lt;/Price&amp;gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/OrderItem&amp;gt;            &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;OrderItem&amp;gt;           &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Name&amp;gt;Product1&amp;lt;/Name&amp;gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &amp;lt;Price&amp;gt;123.00&amp;lt;/Price&amp;gt;            &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; &amp;lt;/OrderItem&amp;gt;            &lt;br /&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&amp;#160; &amp;lt;/Order&amp;gt;           &lt;br /&gt;&amp;lt;/Contract&amp;gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font face="Courier New"&gt;             &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;To get a table with a max of 5 OrderItems as columns, I can use this query:&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160; SELECT    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ContractNumber,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; contractXML.value('(/Contract/Order/OrderItem/Name)[1]','varchar(50)') AS Product1,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; contractXML.value('(/Contract/Order/OrderItem/Name)[2]','varchar(50)') AS Product2,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; contractXML.value('(/Contract/Order/OrderItem/Name)[3]','varchar(50)') AS Product3,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; contractXML.value('(/Contract/Order/OrderItem/Name)[4]','varchar(50)') AS Product4,     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; contractXML.value('(/Contract/Order/OrderItem/Name)[5]','varchar(50)') AS Product5     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM Contract&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This is nice, but what if I want to get the number of each product sold? The answer is that I can use the UNPIVOT operator!   &lt;br /&gt;Something like this will do it:&lt;/p&gt;  &lt;p&gt;SELECT Name, COUNT(*) AS [Count] FROM   &lt;br /&gt;(    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; SELECT     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ContractNumber, col, Name    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; (SELECT     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ContractNumber,    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [col1] = contractXML.value('(/Contract/Order/OrderItem/Name)[1]','varchar(50)'),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [col2] = contractXML.value('(/Contract/Order/OrderItem/Name)[2]','varchar(50)'),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [col3] = contractXML.value('(/Contract/Order/OrderItem/Name)[3]','varchar(50)'),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [col4] = contractXML.value('(/Contract/Order/OrderItem/Name)[4]','varchar(50)'),     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; [col5] = contractXML.value('(/Contract/Order/OrderItem/Name)[5]','varchar(50)')    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; FROM Contract) col    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; UNPIVOT(    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Name    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; FOR col    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; IN ([col1],[col2],[col3],[col4],[col5])    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; ) AS unpvt    &lt;br /&gt;) AS T    &lt;br /&gt;GROUP BY PackageName&lt;/p&gt;  &lt;p&gt;The UNPIVOT operator gives the values in the 5 columns as 1 column.&lt;/p&gt;  &lt;p&gt;If I had only the 1 row in my Contract table from the example above, the result would be:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="399" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="199"&gt;&lt;strong&gt;Name&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="198"&gt;&lt;strong&gt;Count&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Product1&lt;/td&gt;        &lt;td valign="top" width="198"&gt;3&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Product2&lt;/td&gt;        &lt;td valign="top" width="198"&gt;1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="199"&gt;Product3&lt;/td&gt;        &lt;td valign="top" width="198"&gt;1&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;This is a simple example, and it has a max number of ordered products per contract of 5. Could maybe be extended.&lt;/p&gt;  &lt;p&gt;If you want a table with the counts for the different products as columns, then something like this would do the job:&lt;/p&gt;  &lt;p&gt;SELECT    &lt;br /&gt;&amp;#160;&amp;#160; SUM(contractXML.value('count(/Contract/Order/OrderItem[Name=&amp;quot;Product1&amp;quot;])','int')) AS Product1,    &lt;br /&gt;&amp;#160;&amp;#160; SUM(contractXML.value('count(/Contract/Order/OrderItem[Name=&amp;quot;Product2&amp;quot;])','int')) AS Product2,    &lt;br /&gt;&amp;#160;&amp;#160; SUM(contractXML.value('count(/Contract/Order/OrderItem[Name=&amp;quot;Product3&amp;quot;])','int')) AS Product3    &lt;br /&gt;FROM Contract &lt;/p&gt;  &lt;p&gt;This would give this result:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="400" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="132"&gt;&lt;strong&gt;Product1&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;strong&gt;Product2&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="133"&gt;&lt;strong&gt;Product3&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="132"&gt;3&lt;/td&gt;        &lt;td valign="top" width="133"&gt;1&lt;/td&gt;        &lt;td valign="top" width="133"&gt;1&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;And we could of course UNPIVOT this result too:&lt;/p&gt;  &lt;p&gt;SELECT   &lt;br /&gt;&amp;#160;&amp;#160; ProcuctCount    &lt;br /&gt;FROM    &lt;br /&gt;(SELECT     &lt;br /&gt;&amp;#160;&amp;#160; SUM(contractXML.value('count(/Contract/Order/OrderItem[Name=&amp;quot;Product1&amp;quot;])','int')) AS Product1,    &lt;br /&gt;&amp;#160;&amp;#160; SUM(contractXML.value('count(/Contract/Order/OrderItem[Name=&amp;quot;Product2&amp;quot;])','int')) AS Product2,    &lt;br /&gt;&amp;#160;&amp;#160; SUM(contractXML.value('count(/Contract/Order/OrderItem[Name=&amp;quot;Product3&amp;quot;])','int')) AS Product3    &lt;br /&gt;FROM Contract) cols    &lt;br /&gt;UNPIVOT(    &lt;br /&gt;&amp;#160;&amp;#160; ProductCount    &lt;br /&gt;&amp;#160;&amp;#160; FOR cols IN (Product1, Product2, Product3)    &lt;br /&gt;) AS unpvt &lt;/p&gt;  &lt;p&gt;This should give a table like this:&lt;/p&gt;  &lt;table cellspacing="0" cellpadding="2" width="149" border="1"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="147"&gt;&lt;strong&gt;ProductCount&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="147"&gt;3&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="147"&gt;1&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="147"&gt;1&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-6005837636254338137?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/6005837636254338137/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/03/using-sql-server-2005-xml-and-unpivot.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6005837636254338137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/6005837636254338137'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/03/using-sql-server-2005-xml-and-unpivot.html' title='Using SQL Server 2005 XML And Unpivot'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-8846237430459777153</id><published>2008-03-03T16:58:00.001+01:00</published><updated>2008-03-03T17:03:19.487+01:00</updated><title type='text'>Apache Leap Year Bug</title><content type='html'>&lt;p&gt;Seems Apache (Web Server) has some rather embarrassing problems with leap years: &lt;a title="http://blogs.lodgon.com/johan/Leap_year_issues_in_apache_commonsnet" href="http://blogs.lodgon.com/johan/Leap_year_issues_in_apache_commonsnet"&gt;http://blogs.lodgon.com/johan/Leap_year_issues_in_apache_commonsnet&lt;/a&gt;&lt;br&gt;&lt;a title="https://issues.apache.org/jira/browse/NET-188" href="https://issues.apache.org/jira/browse/NET-188"&gt;https://issues.apache.org/jira/browse/NET-188&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-8846237430459777153?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/8846237430459777153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/03/apache-leap-year-bug.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8846237430459777153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8846237430459777153'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/03/apache-leap-year-bug.html' title='Apache Leap Year Bug'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-7882823375870086602</id><published>2008-02-12T09:29:00.001+01:00</published><updated>2008-02-12T09:29:14.603+01:00</updated><title type='text'>Gøran's blog</title><content type='html'>&lt;p&gt;I see that this guy, who was a presenter at MSDN Live in Oslo yesterday, has some good links and stuff relating to WPF and hopefully soon something on MVC (Model-View-Controller): &lt;a title="http://blog.goeran.no/CategoryView,category,Presentation.aspx" href="http://blog.goeran.no/CategoryView,category,Presentation.aspx"&gt;http://blog.goeran.no/CategoryView,category,Presentation.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-7882823375870086602?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/7882823375870086602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/02/gran-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7882823375870086602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7882823375870086602'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/02/gran-blog.html' title='Gøran&amp;#39;s blog'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-4611076087037312588</id><published>2008-02-07T09:33:00.001+01:00</published><updated>2008-02-07T09:33:19.611+01:00</updated><title type='text'>Understanding "login failed" (Error 18456) error messages in SQL Server 2005</title><content type='html'>&lt;p&gt;&lt;a href="http://blogs.msdn.com/sql_protocols/archive/2006/02/21/536201.aspx"&gt;This blog entry&lt;/a&gt; explains how to read the "login failed" error message for SQL Server 2005. The messages can be very cryptic, like for instance "Error: 18456, Severity: 14, State: 8. It is the "State" part that tells you the reason the login failed.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-4611076087037312588?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/4611076087037312588/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2008/02/understanding-failed-error-18456-error.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4611076087037312588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/4611076087037312588'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2008/02/understanding-failed-error-18456-error.html' title='Understanding &amp;quot;login failed&amp;quot; (Error 18456) error messages in SQL Server 2005'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-9149823357516344232</id><published>2007-12-14T09:39:00.001+01:00</published><updated>2007-12-14T10:56:23.733+01:00</updated><title type='text'>Windows Workflow Foundation Links</title><content type='html'>&lt;p&gt;This article by Don Box and Dharma Shukla should be good: &lt;a href="http://msdn.microsoft.com/msdnmag/issues/06/01/WindowsWorkflowFoundation/default.aspx"&gt;Simplify Development With The Declarative Model Of Windows Workflow Foundation&lt;/a&gt;&lt;/p&gt; &lt;p&gt;The most trivial and useless WF application, to get newcomers started: &lt;a title="http://www.codeproject.com/KB/WF/HelloWF.aspx" href="http://www.codeproject.com/KB/WF/HelloWF.aspx"&gt;http://www.codeproject.com/KB/WF/HelloWF.aspx&lt;/a&gt;&lt;/p&gt; &lt;p&gt;Jump start WF: &lt;a title="http://www.codeproject.com/KB/WF/JumpStartWF.aspx" href="http://www.codeproject.com/KB/WF/JumpStartWF.aspx"&gt;http://www.codeproject.com/KB/WF/JumpStartWF.aspx&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-9149823357516344232?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/9149823357516344232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2007/12/windows-workflow-foundation-links.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/9149823357516344232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/9149823357516344232'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2007/12/windows-workflow-foundation-links.html' title='Windows Workflow Foundation Links'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-2454487254303855260</id><published>2007-12-13T11:11:00.001+01:00</published><updated>2007-12-13T11:11:28.488+01:00</updated><title type='text'>Windows Live Writer</title><content type='html'>&lt;p&gt;Blogging just became easier. Using the Windows Live Writer it's pretty easy to make blog entries.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-2454487254303855260?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/2454487254303855260/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2007/12/windows-live-writer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2454487254303855260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/2454487254303855260'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2007/12/windows-live-writer.html' title='Windows Live Writer'/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-3476974334055420504</id><published>2007-10-11T08:48:00.000+02:00</published><updated>2007-10-11T08:50:25.040+02:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;Developing Enhanced Web Experiences with Microsoft® ASP.NET AJAX Extensions&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=117972"&gt;https://www.microsoftelearning.com/eLearning/offerDetail.aspx?offerPriceId=117972&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-3476974334055420504?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/3476974334055420504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2007/10/developing-enhanced-web-experiences.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3476974334055420504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3476974334055420504'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2007/10/developing-enhanced-web-experiences.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-3484328339144636689</id><published>2007-10-11T08:42:00.000+02:00</published><updated>2007-10-11T08:44:24.640+02:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;Intro to Continuous Integration with VS2008&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This should be interesting:&lt;br /&gt;&lt;a href="http://blogs.msdn.com/buckh/archive/2007/08/14/tfs-2008-a-basic-guide-to-team-build-2008.aspx"&gt;http://blogs.msdn.com/buckh/archive/2007/08/14/tfs-2008-a-basic-guide-to-team-build-2008.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-3484328339144636689?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/3484328339144636689/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2007/10/intro-to-continuous-integration-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3484328339144636689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3484328339144636689'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2007/10/intro-to-continuous-integration-with.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-3743936712968830937</id><published>2007-09-27T13:29:00.000+02:00</published><updated>2007-10-11T08:51:20.960+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.microsoft.com/sql/prodinfo/features/compare-features.mspx"&gt;Comparison of different versions of SQL Server 2005 features&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Needed to know if SQL Server Express Edition supports indexed views, and found an article on the Microsoft Web Site. Uh-oh... computer says NO!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-3743936712968830937?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/3743936712968830937/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2007/09/comparison-of-different-versions-of-sql.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3743936712968830937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/3743936712968830937'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2007/09/comparison-of-different-versions-of-sql.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-7976899350731598635</id><published>2007-07-27T09:28:00.000+02:00</published><updated>2007-07-27T09:30:58.883+02:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;CustomValidator dependent on multiple controls&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.codeproject.com/aspnet/MultiDependValidator.asp"&gt;This article&lt;/a&gt; describes how to validate 2 or more controls to see if at least 1 of them has content.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-7976899350731598635?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/7976899350731598635/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2007/07/customvalidator-dependent-on-multiple.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7976899350731598635'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7976899350731598635'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2007/07/customvalidator-dependent-on-multiple.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-8709336004648278410</id><published>2007-05-29T11:52:00.000+02:00</published><updated>2007-05-29T11:56:49.403+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.microsoft.com/office/orkarchive/XPddl.htm"&gt;&lt;strong&gt;Microsoft Office XP Resource Kit downloads&lt;/strong&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Useful stuff for MS Office Developers.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-8709336004648278410?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/8709336004648278410/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2007/05/microsoft-office-xp-resource-kit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8709336004648278410'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/8709336004648278410'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2007/05/microsoft-office-xp-resource-kit.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-1955520089726287372</id><published>2007-05-09T07:42:00.000+02:00</published><updated>2007-05-09T07:45:29.243+02:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;&lt;a href="http://geekswithblogs.net/ranganh/archive/2005/08/29/51474.aspx"&gt;The underlying connection was closed: Unable to connect to the remote server.&lt;/a&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This error sometimes occurs when consuming webservices through a proxy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-1955520089726287372?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/1955520089726287372/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2007/05/underlying-connection-was-closed-unable.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1955520089726287372'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/1955520089726287372'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2007/05/underlying-connection-was-closed-unable.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-7934083351918656932</id><published>2007-05-04T09:05:00.000+02:00</published><updated>2007-05-04T09:12:07.071+02:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;Load Balancing / EPiServer&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Just putting in a few links so I won't loose them:&lt;br /&gt;&lt;br /&gt;How to configure a Windows Server 2003 Load Balancing cluster:&lt;br /&gt;&lt;a href="http://www.west-wind.com/presentations/loadbalancing/NetworkLoadBalancingWindows2003.asp"&gt;Web Farming with the Network Load Balancing Service in Windows Server 2003&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;EPiServer:&lt;br /&gt;&lt;a href="http://www.episerver.com/en/EPiServer_Knowledge_Center/Documentation/Articles/configuration-and-Administration/Configuring-the-Cache-in-Multi-Server-Scenarios/"&gt;Configuring the Cache in Multi-Server Scenarios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.episerver.se/en/EPiServer_Knowledge_Center/Documentation/TechNotes/Configuring-EPiServer-Enterprise-Edition/"&gt;Configuring EPiServer Enterprise Edition&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-7934083351918656932?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/7934083351918656932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2007/05/load-balancing-episerver-just-putting.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7934083351918656932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/7934083351918656932'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2007/05/load-balancing-episerver-just-putting.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-52777950621891850</id><published>2007-04-12T13:56:00.000+02:00</published><updated>2007-05-09T07:55:17.666+02:00</updated><title type='text'></title><content type='html'>&lt;strong&gt;Script error on ASP.NET 1.1 pages&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;I got an error message on my aspx web page after one of the latest Windows updates:&lt;br /&gt;&lt;br /&gt;Unable to find script library '/aspnet_client/system_web/1_1_4322/WebUIValidation.js'. Try placing this file manually, or reinstall by running 'aspnet_regiis -c'.&lt;br /&gt;&lt;br /&gt;After trying to reinstall the script library, and reinstalling aspnet on my web application, I found a solution by simply adding the following code to my aspx file:&lt;br /&gt;&lt;br /&gt;&lt;script language="javascript" src="/aspnet_client/system_web/1_1_4322/WebUIValidation.js" type="text/javascript"&gt;&lt;br /&gt;&lt;/script&gt;&lt;br /&gt;&amp;lt;script language="javascript" type="text/javascript" src="/aspnet_client/system_web/1_1_4322/WebUIValidation.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;&lt;br /&gt;Update:&lt;br /&gt;After I put in the script-tag above in my "master page", I got an other error on pages not having any validation controls, so I had to put in a hidden dummy validator.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-52777950621891850?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/52777950621891850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2007/04/script-error-on-asp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/52777950621891850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/52777950621891850'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2007/04/script-error-on-asp.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-116523217776834330</id><published>2006-12-04T12:09:00.000+01:00</published><updated>2006-12-04T13:41:14.863+01:00</updated><title type='text'></title><content type='html'>&lt;span style="font-size:130%;"&gt;Changing Locale of the ASPNET account&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I have a server that has been installed using default language/locale "en-US".&lt;br /&gt;&lt;br /&gt;This becomes a problem with the date format, which is "MM/dd/yyyy" in en-US, while in Norway where I live we use (nb-NO) "dd.MM.yyyy".&lt;br /&gt;&lt;br /&gt;There is also a problem with which character to use as a decimal point and which to use as a thousand marker/separator:&lt;br /&gt;Norwegian (nb-NO): decimal point is comma (",") , thousand marker is space. Ex: 2 345,67&lt;br /&gt;US English (en-US): decimal point is dot ("."), thousand marker is comma. Ex: 2,345.67&lt;br /&gt;&lt;br /&gt;So I need a way to set the locale that the ASPNET account is using.&lt;br /&gt;&lt;br /&gt;There are several ways. You can set this in the web.config file:&lt;br /&gt;&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt;&amp;lt;system.web&amp;gt;&lt;br /&gt;    &amp;lt;globalization&lt;br /&gt;        culture="nb-NO"&lt;br /&gt;        uiCulture="nb-NO" /&amp;gt;&lt;br /&gt;&amp;lt;/system.web&amp;gt;&lt;br /&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;br /&gt;You can also set it in the users session, by using the Session_Start event handler:&lt;br /&gt;&lt;br /&gt;&lt;PRE&gt;&lt;br /&gt;protected void Session_Start(object sender, EventArgs e)&lt;br /&gt;{&lt;br /&gt;    this.Session.LCID = 1044;&lt;br /&gt;}&lt;br /&gt;&lt;/PRE&gt;&lt;br /&gt;&lt;br /&gt;If you want to change the default settings of the ASPNET account (and you have the guts), you could go in and change the settings in the registry.&lt;br /&gt;&lt;br /&gt;NB! It may be risky to change settings in the registry. The author of this blog is not responsible for any damage that may be caused by doing so.&lt;br /&gt;&lt;br /&gt;Anyway here it is, change the settings under the following key:&lt;br /&gt;&lt;br /&gt;HKEY_USERS\S-1-5-20\Control Panel\International&lt;br /&gt;&lt;br /&gt;Here you can see settings for number formats, date formats languages etc for the user. I have as of now &lt;span style="color:#ff0000;"&gt;NOT TESTED THIS&lt;/span&gt;, but the key for the ASPNET user should according to a news group be S-1-5-20.&lt;br /&gt;&lt;br /&gt;Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-116523217776834330?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/116523217776834330/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/12/changing-locale-of-aspnet-account-i.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/116523217776834330'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/116523217776834330'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/12/changing-locale-of-aspnet-account-i.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-115935325744851828</id><published>2006-09-27T12:31:00.000+02:00</published><updated>2006-09-27T12:34:17.450+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.codeproject.com/useritems/RecordsetSerializer.asp"&gt;ADODB serialization&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Found a simple but cool way to serialize an ADODB Recordset without converting to DataSet on CodeProject.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-115935325744851828?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/115935325744851828/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/09/adodb-serialization-found-simple-but.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/115935325744851828'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/115935325744851828'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/09/adodb-serialization-found-simple-but.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-115554153593747644</id><published>2006-08-14T09:45:00.000+02:00</published><updated>2006-08-14T09:45:35.996+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://msdn.microsoft.com/security/default.aspx?pull=/msdnmag/issues/02/09/securitytips/default.aspx"&gt;Security Developer Center: Security Tips: Defend Your Code with Top Ten Security Tips Every Developer Must Know&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Not sure if I have bookmarked this before. Well, better safe than sorry...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-115554153593747644?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/115554153593747644/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/08/security-developer-center-security.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/115554153593747644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/115554153593747644'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/08/security-developer-center-security.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-115097815155893890</id><published>2006-06-22T14:09:00.000+02:00</published><updated>2006-06-22T14:09:11.776+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.codeproject.com/internet/YourOwnSecureProtocol.asp"&gt;Build your own cryptographically safe server/client protocol - The Code Project - Internet &amp; Network&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Good article that explains quite a bit about how cryptography works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-115097815155893890?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/115097815155893890/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/06/build-your-own-cryptographically-safe.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/115097815155893890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/115097815155893890'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/06/build-your-own-cryptographically-safe.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-115037772200288799</id><published>2006-06-15T15:22:00.000+02:00</published><updated>2006-06-15T15:22:02.703+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.codeproject.com/useritems/tips.asp"&gt;Some Cool Tips for .NET - The Code Project - C# Controls&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nice to know info on how to get information about windows and other stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-115037772200288799?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/115037772200288799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/06/some-cool-tips-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/115037772200288799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/115037772200288799'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/06/some-cool-tips-for.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-114897792529468880</id><published>2006-05-30T10:32:00.000+02:00</published><updated>2006-05-30T10:32:05.350+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.sql-server-performance.com/gv_monitoring_8_steps.asp"&gt;SQL Server Monitoring in 8 Steps: Lessons From the Field&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;How to get a quick status of the server while on-site.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-114897792529468880?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/114897792529468880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/05/sql-server-monitoring-in-8-steps.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114897792529468880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114897792529468880'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/05/sql-server-monitoring-in-8-steps.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-114838392231361035</id><published>2006-05-23T13:32:00.000+02:00</published><updated>2006-05-23T13:32:02.430+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.milonic.com/"&gt;Free JavaScript DHTML Website Menus, Cross Browser Popup Web Menu&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Nice, free Javascript menus.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-114838392231361035?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/114838392231361035/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/05/free-javascript-dhtml-website-menus.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114838392231361035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114838392231361035'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/05/free-javascript-dhtml-website-menus.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-114837023420233395</id><published>2006-05-23T09:43:00.000+02:00</published><updated>2006-05-23T09:43:54.263+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://blogs.technet.com/megand/articles/357570.aspx"&gt;The Soul of a Virtual Machine : Sysprepping a virtual machine&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Description of how to sysprep a VPC. Useful stuff.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-114837023420233395?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/114837023420233395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/05/soul-of-virtual-machine-sysprepping.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114837023420233395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114837023420233395'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/05/soul-of-virtual-machine-sysprepping.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-114416118648793132</id><published>2006-04-04T16:33:00.000+02:00</published><updated>2006-05-03T16:34:14.130+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.codeproject.com/aspnet/HttpSecureCookie.asp"&gt;HttpSecureCookie, A Way to Encrypt Cookies with ASP.NET 2.0 - The Code Project - ASP.NET&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This article describes how to encrypt cookies in .NET 2.0.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-114416118648793132?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/114416118648793132/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/04/httpsecurecookie-way-to-encrypt.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114416118648793132'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114416118648793132'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/04/httpsecurecookie-way-to-encrypt.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-114405205340077369</id><published>2006-04-03T10:14:00.000+02:00</published><updated>2006-04-03T10:14:13.736+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.techsupportalert.com/best_46_free_utilities.htm"&gt;The 46 Best-ever Freeware Utilities&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a nice page with lots of free software links. Among others, web browsers and antivirus programs.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-114405205340077369?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/114405205340077369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/04/46-best-ever-freeware-utilities-this.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114405205340077369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114405205340077369'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/04/46-best-ever-freeware-utilities-this.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-114404533939864653</id><published>2006-04-03T08:22:00.000+02:00</published><updated>2006-04-03T08:22:19.410+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.securityfocus.com/infocus/1688"&gt;Auditing Web Site Authentication, Part One&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Every web developer should read this. Excellent!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-114404533939864653?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/114404533939864653/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/04/auditing-web-site-authentication-part.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114404533939864653'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114404533939864653'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/04/auditing-web-site-authentication-part.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-114404425533219955</id><published>2006-04-03T08:04:00.000+02:00</published><updated>2006-04-03T08:04:15.366+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.codeproject.com/webservices/WS-Security.asp"&gt;An introduction to Web Service Security using WSE - Part I - The Code Project - C++ Web Services&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Some big players as Microsoft and IBM built a group that dealed with the security problem (of Web Services), finally offering several specifications. The most important, and foundation of the others, is Web Service-Security (WS-Security or WSS).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-114404425533219955?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/114404425533219955/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/04/introduction-to-web-service-security.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114404425533219955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114404425533219955'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/04/introduction-to-web-service-security.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6857219.post-114362754295680529</id><published>2006-03-29T12:19:00.000+02:00</published><updated>2006-03-29T12:19:03.016+02:00</updated><title type='text'></title><content type='html'>&lt;a href="http://www.ssh.com/support/cryptography/"&gt;SSH : Support : Cryptography A-Z&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Site with a lot of information on cryptography, and different algorithms.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6857219-114362754295680529?l=stgaup.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://stgaup.blogspot.com/feeds/114362754295680529/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://stgaup.blogspot.com/2006/03/ssh-support-cryptography-z-site-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114362754295680529'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6857219/posts/default/114362754295680529'/><link rel='alternate' type='text/html' href='http://stgaup.blogspot.com/2006/03/ssh-support-cryptography-z-site-with.html' title=''/><author><name>Svein Terje</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
