<?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'><id>tag:blogger.com,1999:blog-9117119910522706513</id><updated>2010-03-08T08:01:34.868-07:00</updated><title type='text'>Matt's ramblings</title><subtitle type='html'>Me rambling about .Net, technology, and other interests...</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/default.html'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.weminuche.net/atom.xml'/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>12</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-9117119910522706513.post-1828491753345892279</id><published>2010-02-08T22:09:00.001-07:00</published><updated>2010-02-08T22:11:47.516-07:00</updated><title type='text'>Visual Studio 2010 Release Candidate</title><content type='html'>The Visual Studio 2010 RC dropped today!!!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx"&gt;http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9117119910522706513-1828491753345892279?l=blog.weminuche.net%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/1828491753345892279/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9117119910522706513&amp;postID=1828491753345892279' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/1828491753345892279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/1828491753345892279'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/2010/02/visual-studio-2010-release-candidate.html' title='Visual Studio 2010 Release Candidate'/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16808958304401033000'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9117119910522706513.post-654872733800391587</id><published>2009-11-26T01:46:00.001-07:00</published><updated>2009-12-03T10:57:12.454-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='windows server 2008'/><title type='text'>Windows Server 2008 IIS7 SSL Host Header</title><content type='html'>&lt;p&gt;I’ll start off with the bad.&amp;#160; You cannot set this up using the IIS Manager.&amp;#160; Also, once you have it setup, you can view the settings from the IIS Manager, but if you make any changes, the ssl host header settings will be removed.&amp;#160; Very convenient.&lt;/p&gt;  &lt;p&gt;The good news is, once you figure out the command line to set it up, it works great.&amp;#160; I have been using it on a couple of test servers for quite a while now to host different test urls on a single ip address.&lt;/p&gt;  &lt;p&gt;Assuming you have IIS setup and a cert ready to use, here are the steps I followed.&lt;/p&gt;  &lt;p&gt;1. Go ahead and add an SSL binding with your certificate to the website.&amp;#160; The reason for this is to get the certificate hash and Application ID.&amp;#160; You can also get the certificate hash by viewing the details of the cert.&amp;#160; As for the Application ID, this is the only way I could find to get it.&amp;#160; It is probably also the the IIS metabase xml file as well. &lt;/p&gt;  &lt;p&gt;2.&amp;#160; In a command prompt run the following command and save the certhash and appid. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;netsh http show sslcert&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blog.weminuche.net/uploaded_images/HostHeaderSSLwithWindowsServer2008andIIS_13D9D/showsslcert.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="showsslcert" border="0" alt="showsslcert" src="http://blog.weminuche.net/uploaded_images/HostHeaderSSLwithWindowsServer2008andIIS_13D9D/showsslcert_thumb.png" width="244" height="94" /&gt;&lt;/a&gt;&amp;#160;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;3.&amp;#160; Change directories in the command window to c:\Windows\System32\inetsrv and run &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;appcmd.exe set config -section:system.applicationHost/sites /+&lt;/strong&gt;&lt;strong&gt;&lt;span class="str"&gt;&amp;quot;[name='test.mydomain.com'].bindings.[protocol='https',bindingInformation='127.0.0.1          &lt;br /&gt;443:test.mydomain.com']&amp;quot;&lt;/span&gt; /commit:apphost&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blog.weminuche.net/uploaded_images/HostHeaderSSLwithWindowsServer2008andIIS_13D9D/appcmd.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="appcmd" border="0" alt="appcmd" src="http://blog.weminuche.net/uploaded_images/HostHeaderSSLwithWindowsServer2008andIIS_13D9D/appcmd_thumb.png" width="244" height="29" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Note: The name= parameter is the name of the site in IIS manager. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;4.&amp;#160; The last step is to bind the ssl certificate to the site.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;strong&gt;netsh http add sslcert ipport=127.0.0.1:443 certhash=1f5596aa6ed348243056eec325fe1fbc326c2d3a appid=&amp;quot;{4dc3e181-e14b-4a21-b022-59fc669b0914}&amp;quot;&lt;/strong&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;a href="http://blog.weminuche.net/uploaded_images/HostHeaderSSLwithWindowsServer2008andIIS_13D9D/addsslcert.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="addsslcert" border="0" alt="addsslcert" src="http://blog.weminuche.net/uploaded_images/HostHeaderSSLwithWindowsServer2008andIIS_13D9D/addsslcert_thumb.png" width="244" height="28" /&gt;&lt;/a&gt; &lt;/p&gt; &lt;/blockquote&gt;  &lt;ul&gt;   &lt;li&gt;Note: Make sure you put in the values for certhash and appid that you copied earlier. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Finally, the end result….&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blog.weminuche.net/uploaded_images/HostHeaderSSLwithWindowsServer2008andIIS_13D9D/iis.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="iis" border="0" alt="iis" src="http://blog.weminuche.net/uploaded_images/HostHeaderSSLwithWindowsServer2008andIIS_13D9D/iis_thumb.png" width="244" height="84" /&gt;&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/9117119910522706513-654872733800391587?l=blog.weminuche.net%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/654872733800391587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9117119910522706513&amp;postID=654872733800391587' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/654872733800391587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/654872733800391587'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/2009/11/ssl-host-header-with-windows-server.html' title='Windows Server 2008 IIS7 SSL Host Header'/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16808958304401033000'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9117119910522706513.post-8848442700992811403</id><published>2009-11-13T22:41:00.001-07:00</published><updated>2009-11-13T22:41:56.413-07:00</updated><title type='text'>TFS 2008 Remove Alerts</title><content type='html'>&lt;p&gt;Today I had the need to remove alerts for a user no longer on the project.&amp;#160; It is easy to edit build alerts/notifications using Team Explorer or the TFS Power Tools.&amp;#160; But, I could not find a way to remove Work Item alerts for a user.&amp;#160; Maybe I was missing something simple, but I like to think I wasn’t.&amp;#160; Plus, with the user being a contractor, the email address that was used was not in exchange or tied to the domain account.&amp;#160; After some digging around, I found where TFS stores alert subscriptions in the database and simply deleted the rows.&amp;#160; I found them at&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff"&gt;TfsIntegration.dbo.tbl_subscription&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;So far, this appears to work.&amp;#160; I anyone has a better/cleaner way, I would love to hear about it.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9117119910522706513-8848442700992811403?l=blog.weminuche.net%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/8848442700992811403/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9117119910522706513&amp;postID=8848442700992811403' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/8848442700992811403'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/8848442700992811403'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/2009/11/tfs-2008-remove-alerts.html' title='TFS 2008 Remove Alerts'/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16808958304401033000'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9117119910522706513.post-6943524804244877560</id><published>2008-08-07T23:26:00.001-06:00</published><updated>2008-08-08T00:27:57.027-06:00</updated><title type='text'>WCF Client Proxy IDisposable - Generic WCF Service Proxy</title><content type='html'>&lt;p&gt;I have run into this issue on several clients now.&amp;#160; The basic issue is when using WCF on the client, using ClientBase&amp;lt;&amp;gt;, and you do not close the channel, you can tie up the server until the channel times out.&amp;#160; So, once the max instances, sessions, or concurrent calls is reached and the clients are not closing their channels, the server will block and queue up subsequent calls.&amp;#160; The un-closed client channels will eventually timeout, which causes a fault on the client, and the next set of calls will then make it through.&lt;/p&gt;  &lt;p&gt;When I first hit this issue, my thought was to wrap my client base code in a using () statement so Dispose() would then be called.&amp;#160; But, ClientBase&amp;lt;&amp;gt; does not implement IDisposable.&amp;#160; Here is some info on the issue...&lt;/p&gt;  &lt;p&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=627970&amp;amp;SiteID=1" target="_blank"&gt;Guidance on factory close and message faults&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=855243&amp;amp;SiteID=1" target="_blank"&gt;Why does ClientBase Dispose need to throw on faulted state&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So, after lots of testing to understand all the WCF knobs to tweak, I came up with a generic class I called ServiceProxy for clients to use when creating/using client channels.&amp;#160; This has been through several revisions and here is what I have ended up with.&amp;#160; The idea to add support for the delegate came from this blog entry&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.iserviceoriented.com/blog/post/Indisposable+-+WCF+Gotcha+1.aspx" target="_blank"&gt;iServiceOriented.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here is the code for my generic service proxy wrapper...&lt;/p&gt;  &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;   &lt;p style="margin: 0px"&gt;&lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;class&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ServiceProxy&lt;/span&gt;&amp;lt;TInterface&amp;gt; : &lt;span style="color: #2b91af"&gt;ClientBase&lt;/span&gt;&amp;lt;TInterface&amp;gt;, &lt;span style="color: #2b91af"&gt;IDisposable&lt;/span&gt; &lt;span style="color: blue"&gt;where&lt;/span&gt; TInterface : &lt;span style="color: blue"&gt;class&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;delegate&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ServiceProxyDelegate&lt;/span&gt;&amp;lt;T&amp;gt;(TInterface proxy);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; ServiceProxy()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : &lt;span style="color: blue"&gt;base&lt;/span&gt;(&lt;span style="color: blue"&gt;typeof&lt;/span&gt;(TInterface).ToString())&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; ServiceProxy(&lt;span style="color: blue"&gt;string&lt;/span&gt; endpointConfigurationName)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; : &lt;span style="color: blue"&gt;base&lt;/span&gt;(endpointConfigurationName)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;protected&lt;/span&gt; &lt;span style="color: blue"&gt;override&lt;/span&gt; TInterface CreateChannel()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;base&lt;/span&gt;.CreateChannel();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; TInterface Proxy&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;get&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&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 style="margin: 0px"&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;span style="color: blue"&gt;return&lt;/span&gt; &lt;span style="color: blue"&gt;this&lt;/span&gt;.Channel;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&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 style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Call(&lt;span style="color: #2b91af"&gt;ServiceProxyDelegate&lt;/span&gt;&amp;lt;TInterface&amp;gt; proxyDelegate)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Call(proxyDelegate, &lt;span style="color: blue"&gt;typeof&lt;/span&gt;(TInterface).ToString());&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;static&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Call(&lt;span style="color: #2b91af"&gt;ServiceProxyDelegate&lt;/span&gt;&amp;lt;TInterface&amp;gt; proxyDelegate, &lt;span style="color: blue"&gt;string&lt;/span&gt; endpointConfigurationName)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: #2b91af"&gt;ChannelFactory&lt;/span&gt;&amp;lt;TInterface&amp;gt; channel = &lt;span style="color: blue"&gt;new&lt;/span&gt; &lt;span style="color: #2b91af"&gt;ChannelFactory&lt;/span&gt;&amp;lt;TInterface&amp;gt;(endpointConfigurationName);&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;try&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&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 style="margin: 0px"&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; proxyDelegate(channel.CreateChannel());&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&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 style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;finally&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&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 style="margin: 0px"&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;span style="color: blue"&gt;if&lt;/span&gt; (channel.State == &lt;span style="color: #2b91af"&gt;CommunicationState&lt;/span&gt;.Faulted)&lt;/p&gt;    &lt;p style="margin: 0px"&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 style="margin: 0px"&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; channel.Abort();&lt;/p&gt;    &lt;p style="margin: 0px"&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 style="margin: 0px"&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;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&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 style="margin: 0px"&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; &lt;span style="color: blue"&gt;try&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&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; {&lt;/p&gt;    &lt;p style="margin: 0px"&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;&amp;#160;&amp;#160;&amp;#160;&amp;#160; channel.Close();&lt;/p&gt;    &lt;p style="margin: 0px"&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; }&lt;/p&gt;    &lt;p style="margin: 0px"&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; &lt;span style="color: blue"&gt;catch&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&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; {&lt;/p&gt;    &lt;p style="margin: 0px"&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;&amp;#160;&amp;#160;&amp;#160;&amp;#160; channel.Abort();&lt;/p&gt;    &lt;p style="margin: 0px"&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; }&lt;/p&gt;    &lt;p style="margin: 0px"&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 style="margin: 0px"&gt;&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 style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;public&lt;/span&gt; &lt;span style="color: blue"&gt;void&lt;/span&gt; Dispose()&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;if&lt;/span&gt; (&lt;span style="color: blue"&gt;this&lt;/span&gt;.State == &lt;span style="color: #2b91af"&gt;CommunicationState&lt;/span&gt;.Faulted)&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&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 style="margin: 0px"&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;span style="color: blue"&gt;base&lt;/span&gt;.Abort();&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&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 style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;else&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&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 style="margin: 0px"&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;span style="color: blue"&gt;try&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&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 style="margin: 0px"&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; &lt;span style="color: blue"&gt;base&lt;/span&gt;.Close();&lt;/p&gt;    &lt;p style="margin: 0px"&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 style="margin: 0px"&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;span style="color: blue"&gt;catch&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin: 0px"&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 style="margin: 0px"&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; &lt;span style="color: blue"&gt;base&lt;/span&gt;.Abort();&lt;/p&gt;    &lt;p style="margin: 0px"&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 style="margin: 0px"&gt;&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 style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;    &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;    &lt;p style="margin: 0px"&gt;And, here are some usages samples...&lt;/p&gt;    &lt;div style="font-size: 10pt; background: white; color: black; font-family: courier new"&gt;     &lt;p style="margin: 0px"&gt;&lt;span style="color: green"&gt;//delegate example1&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; response = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ServiceModel.ServiceProxy&amp;lt;IUnitTestService&amp;gt;.Call(p =&amp;gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&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 style="margin: 0px"&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; response = p.DoStuff(&lt;span style="color: #a31515"&gt;&amp;quot;ServiceProxyUsingTest&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&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 style="margin: 0px"&gt;&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 style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//delegate example2&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; response = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ServiceProxy&amp;lt;IUnitTestService&amp;gt;.Call(p =&amp;gt; response = p.DoStuff(&lt;span style="color: #a31515"&gt;&amp;quot;ServiceProxyUsingTest&amp;quot;&lt;/span&gt;));&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: green"&gt;//using example&lt;/span&gt;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;string&lt;/span&gt; response = &lt;span style="color: blue"&gt;null&lt;/span&gt;;&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span style="color: blue"&gt;using&lt;/span&gt; (ServiceProxy&amp;lt;IUnitTestService&amp;gt; service = &lt;span style="color: blue"&gt;new&lt;/span&gt; ServiceProxy&amp;lt;IUnitTestService&amp;gt;())&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&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 style="margin: 0px"&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; response = service.Proxy.DoStuff(&lt;span style="color: #a31515"&gt;&amp;quot;ServiceProxyUsingTest&amp;quot;&lt;/span&gt;);&lt;/p&gt;      &lt;p style="margin: 0px"&gt;&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;/div&gt; &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9117119910522706513-6943524804244877560?l=blog.weminuche.net%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/6943524804244877560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9117119910522706513&amp;postID=6943524804244877560' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/6943524804244877560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/6943524804244877560'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/2008/08/test-post.html' title='WCF Client Proxy IDisposable - Generic WCF Service Proxy'/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16808958304401033000'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9117119910522706513.post-4073912661254137123</id><published>2008-06-03T20:51:00.003-06:00</published><updated>2008-06-03T21:29:23.928-06:00</updated><title type='text'>WCF Presentation at South Colorado .Net User Groupo</title><content type='html'>Here is the content from my WCF presentation today at the &lt;a href="http://www.southcolorado.net/"&gt;South Colorado .Net User Group&lt;/a&gt;. The zip file includes the powerpoint, code, and a sql backup file of the demo database. Feel free to email me with any questions.&lt;span style="font-size:+0;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.weminuche.net/UploadedFiles/WCF%20Demo.zip"&gt;WCFDemo.zip&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9117119910522706513-4073912661254137123?l=blog.weminuche.net%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/4073912661254137123/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9117119910522706513&amp;postID=4073912661254137123' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/4073912661254137123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/4073912661254137123'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/2008/06/wcf-presentation-at-south-colorado-net.html' title='WCF Presentation at South Colorado .Net User Groupo'/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16808958304401033000'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9117119910522706513.post-9015893453741232520</id><published>2008-05-28T10:00:00.006-06:00</published><updated>2008-05-28T11:19:03.542-06:00</updated><title type='text'>Server 2008 Virtual Cluster with Hyper-V</title><content type='html'>&lt;div&gt;I spent the last few days building out a virtual Server 2008 clustered environment in Hyper-V RC0 (I hvae not upgraded to RC1 yet) to do some prototyping for a project. After some playing, I found out you cannot create a shared vhd for multiple virutals to share. So the challenge is how do I setup a shared drive for my cluster quorum and storage. After some research, I found this blog entry (which is right-on, worked great!)&lt;br /&gt;&lt;a href="http://blogs.technet.com/pfe-ireland/archive/2008/05/16/how-to-create-a-windows-server-2008-cluster-within-hyper-v-using-simulated-iscsi-storage.aspx"&gt;http://blogs.technet.com/pfe-ireland/archive/2008/05/16/how-to-create-a-windows-server-2008-cluster-within-hyper-v-using-simulated-iscsi-storage.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You basically need to create a virtual san on another virutal server using iSCSI to create your shared disks for the cluster. I had the &lt;a href="http://www.rocketdivision.com/wind.html"&gt;StarWind&lt;/a&gt; software up and running in no time. NOTE: If you get an error that the StartWind software cannot obtain exclusive access to the drives in the VM, try closing windows explorer if you were browsing that drive. :) I was also able to install StarWind into a virtual running Server 2008 standard without any problems.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.weminuche.net/uploaded_images/Cluster-Disk-758725.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://blog.weminuche.net/uploaded_images/Cluster-Disk-758618.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.weminuche.net/uploaded_images/StarWind-743580.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://blog.weminuche.net/uploaded_images/StarWind-743387.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Another note...after getting everything up and running, I was adding a second cluster resource and needed a another cluster storage drive. After shutting down the virtual running the StarWind software, I added another SCSI vhd through the Hyper-V management console. Once I started the virtual back up, I was unable to format the new drive for use. I had to shutdown the StarWind service before I was able to format the drive, even though that drive was not yet added as a device in StarWind.&lt;br /&gt;&lt;br /&gt;I am now in the process of setting up a couple of clustered MSMQ queues to use with WCF and some backend processing applications. As this comes together and hopefully works, I will post more information.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9117119910522706513-9015893453741232520?l=blog.weminuche.net%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/9015893453741232520/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9117119910522706513&amp;postID=9015893453741232520' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/9015893453741232520'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/9015893453741232520'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/2008/05/server-2008-virtual-cluster-with-hyper.html' title='Server 2008 Virtual Cluster with Hyper-V'/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16808958304401033000'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9117119910522706513.post-3958416010353921034</id><published>2008-05-07T22:35:00.006-06:00</published><updated>2008-05-08T22:38:31.612-06:00</updated><title type='text'>Team Foundation Server 2008 Hardware Migration</title><content type='html'>In the last two weeks, I have been through two TFS hardware migrations, neither of which went smoothly. The first migration involved moving to a new server on a new domain and the second was a new server on the same domain. Neither installation is that large so we have both TFS and SQL running on the same box.&lt;br /&gt;&lt;br /&gt;First, I started by following the documentation from Microsoft&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms404869.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms404869.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The part that did not work was moving the data tier. It would fail with a variety of errors. I checked the connection string web.config in the Services virtual under the Team Foundation Server site hosted on port 8080. It was right, but TFS would not work. After some digging around in the event log, I saw that it was still trying to connect to the old database server. Thinking I missed some steps, I started back over from the beginning and ran into the same issues again. I was not able to find any other connection string in any of the TFS website structure, so I started digging into the database. This sure was starting to feel like a BizTalk database recovery (which is much worse!!). In the TFSIntegration database, there is a table called tbl_database (just in case being in the Tables collection wasn't enough of a clue that it was a table). And there they were, serveral entries with the old database server name. So, I manually changed these to the new db server and tfs was working!!! After that, everyone was able to sync up their source just fine and we were working again. The team project sites were even working.&lt;br /&gt;&lt;br /&gt;This same fix worked on both TFS migrations. After running into the same issue on the second migration, I did find this article &lt;a href="http://msdn.microsoft.com/en-us/library/bb909757.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb909757.aspx&lt;/a&gt;, which made me feel a little better about our hack solution.&lt;br /&gt;&lt;br /&gt;In the end, two successful migrations. In reading some of the issues others have run into, the migration doc needs some work. I still don't know why following the doc didn't work for the data tier and what the right way is (maybe this is it!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9117119910522706513-3958416010353921034?l=blog.weminuche.net%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/3958416010353921034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9117119910522706513&amp;postID=3958416010353921034' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/3958416010353921034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/3958416010353921034'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/2008/05/team-foundation-server-2008-hardware.html' title='Team Foundation Server 2008 Hardware Migration'/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16808958304401033000'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9117119910522706513.post-8574283881401090047</id><published>2007-12-16T21:25:00.000-07:00</published><updated>2007-12-16T21:57:09.742-07:00</updated><title type='text'>AppDomain CreateInstanceAndUnwrap w/ Visual Studio 2008</title><content type='html'>I recently converted a project form Visual Studio 2005 to Visual Studio 2008 RTM. I am using AppDomain.CurrentDomain.CreateInstanceAndUnwrap to dynamically create an instance similar to the following&lt;br /&gt;&lt;br /&gt;string assembly = "Test.dll";&lt;br /&gt;string type = "Test.MyClass";&lt;br /&gt;MyClass obj = AppDomain.CurrentDomain.CreateInstanceAndUnwrap(assembly, type) as MyClass;&lt;br /&gt;&lt;br /&gt;This worked fine in 2005 but gets an exception in 2008 - "could not load file or assembly or one of it's dependancies". Looking at the fusion log, which is now in the exception info window in Studio (very nice), I could see that it was looking for Test.dll.dll, Test.dll.exe. So, the extension is being appended to the end of the assembly name. After removing ".dll" from the name of the assembly, the code works fine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9117119910522706513-8574283881401090047?l=blog.weminuche.net%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/8574283881401090047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9117119910522706513&amp;postID=8574283881401090047' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/8574283881401090047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/8574283881401090047'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/2007/12/appdomain-createinstanceandunwrap-w.html' title='AppDomain CreateInstanceAndUnwrap w/ Visual Studio 2008'/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16808958304401033000'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9117119910522706513.post-3684143362410711247</id><published>2007-12-11T10:26:00.000-07:00</published><updated>2007-12-11T10:37:22.995-07:00</updated><title type='text'>.Net Framework 3.5 Redist...200MB!!!!</title><content type='html'>I went to download the .net framework 3.5 redist package and it is basically 200mb...wow!!!  That is rather large compared to the other versions of the framework.  I usually avoid the smaller setup bootstrapper since I don't want to wait for it when I am installing the framework on a server.  But, what about deploying client apps?  One client has a windows app and they are not going to want to include a 200mb redist with their package.&lt;br /&gt;&lt;br /&gt;After reading a couple of forum posts, using the boostrapper looks to be the way to go.  Using this, you should be able to download just the components that you need.  Here are the links...&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2437304&amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2437304&amp;SiteID=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2451232&amp;SiteID=1"&gt;http://http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=2451232&amp;SiteID=1&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can download both versions of the setup here&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=333325FD-AE52-4E35-B531-508D977D32A6&amp;displaylang=en&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9117119910522706513-3684143362410711247?l=blog.weminuche.net%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/3684143362410711247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9117119910522706513&amp;postID=3684143362410711247' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/3684143362410711247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/3684143362410711247'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/2007/12/net-framework-35-redist200mb.html' title='.Net Framework 3.5 Redist...200MB!!!!'/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16808958304401033000'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9117119910522706513.post-7791200731117969141</id><published>2007-11-23T12:55:00.000-07:00</published><updated>2007-11-23T13:18:33.048-07:00</updated><title type='text'>Windows Server 2008 Stored User Names and Passwords</title><content type='html'>I have been setting up my development environmet in Server 2008 RC0 to start getting a feel for it.  Since I deal with multiple domains and user accounts including, my home and clients, I use "Stored User Names and Passwords".  Well, this appears to have changed slightly.  The way i set it up in XP Pro and Server 2003 looks like this&lt;br /&gt;&lt;a href="http://blog.weminuche.net/uploaded_images/stored-2003-760187.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://blog.weminuche.net/uploaded_images/stored-2003-760183.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As I went to set this up in Server 2008, I had to find out where.  In the Control Panel, there is an item called "User Accounts".  In this window, there is a link on the left called "Manage your network passwords".  This brings up the familiar screen for setting up cached accounts.  My first attempt gave me this&lt;br /&gt;&lt;a href="http://blog.weminuche.net/uploaded_images/server-2008-1-747340.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://blog.weminuche.net/uploaded_images/server-2008-1-747335.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notice the validation error.  So, a couple of quick tests and I eneded up with this&lt;br /&gt;&lt;a href="http://blog.weminuche.net/uploaded_images/server-2008-2-772421.JPG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://blog.weminuche.net/uploaded_images/server-2008-2-772416.JPG" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;where I used *.MyDomain instead of MyDomain\*.  In my first test of this (connecting to network share), it appears to work fine.  The next set of testing will be if it works when authenticating to sql server and tfs.  I will find out once I get all that loaded up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9117119910522706513-7791200731117969141?l=blog.weminuche.net%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/7791200731117969141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9117119910522706513&amp;postID=7791200731117969141' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/7791200731117969141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/7791200731117969141'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/2007/11/windows-server-2008-stored-user-names.html' title='Windows Server 2008 Stored User Names and Passwords'/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16808958304401033000'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9117119910522706513.post-7326515187674353381</id><published>2007-11-14T23:44:00.000-07:00</published><updated>2007-11-14T23:47:56.581-07:00</updated><title type='text'></title><content type='html'>Ben Hoelting did a presentation on Linq at the South Colorado .Net users group.  It provides an overview of Linq and some new features in Visual Studio 2008.  Check it out &lt;a href="http://www.benhblog.com/"&gt;at Ben's Blog &lt;/a&gt; or the user group site &lt;a href="http://www.southcolorado.net/default.aspx"&gt;South Colorado .Net&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9117119910522706513-7326515187674353381?l=blog.weminuche.net%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/7326515187674353381/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9117119910522706513&amp;postID=7326515187674353381' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/7326515187674353381'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/7326515187674353381'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/2007/11/ben-hoelting-did-presentation-on-linq.html' title=''/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16808958304401033000'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-9117119910522706513.post-2548157037489768984</id><published>2007-11-07T11:28:00.001-07:00</published><updated>2007-11-07T11:28:29.595-07:00</updated><title type='text'></title><content type='html'>After months of procrastinating, I have finally taken the time to setup a blog. I have a few topics in mind that have been sitting in a text file on my desktop for almost 6 months now. I will hopefully find some time over the next week or so to get a couple posts written up. And, maybe, someone will actually find their way here to read then and get some value (even better!).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/9117119910522706513-2548157037489768984?l=blog.weminuche.net%2Fdefault.html' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/2548157037489768984/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=9117119910522706513&amp;postID=2548157037489768984' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/2548157037489768984'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/9117119910522706513/posts/default/2548157037489768984'/><link rel='alternate' type='text/html' href='http://blog.weminuche.net/2007/11/after-months-of-procrastinating-i-have.html' title=''/><author><name>Matt</name><uri>http://www.blogger.com/profile/17679376968074413802</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='16808958304401033000'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>