<?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-6023216877398324826</id><updated>2012-01-29T17:41:39.768-06:00</updated><category term='xml'/><category term='Vista'/><category term='MSUnit'/><category term='certificates'/><category term='xsd'/><category term='cygwin'/><category term='sticky session'/><category term='SQL Server 2005'/><category term='WebRequest'/><category term='serialization'/><category term='RemoteDesktop'/><category term='redistributables'/><category term='load balancer'/><category term='Orcas'/><category term='How do I XML'/><category term='DateTime'/><category term='problems'/><category term='WCF'/><category term='persistence'/><category term='Nant'/><category term='UnitTesting'/><category term='NHibernate'/><category term='Netdom'/><category term='domain'/><category term='Click once'/><category term='JSON'/><category term='DataContractJsonSerializer'/><category term='CF'/><category term='c++'/><category term='WPF'/><category term='How do I WCF'/><category term='HttpWebRequest'/><title type='text'>Dave's Thoughts</title><subtitle type='html'>This blog is intended as a personal reference and a way of reinforcing knowledge gained through experience.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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>26</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-1046577941825504637</id><published>2010-07-02T11:07:00.002-05:00</published><updated>2010-07-02T11:16:12.446-05:00</updated><title type='text'>WCF Method not found only effects SOAP services</title><content type='html'>I thought I was going to have to blow the OS away on my laptop since it's the only computer I've got that is experiencing this error with SOAP services (REST works great):&lt;br /&gt;&lt;br /&gt;The problem:&lt;br /&gt;Method not found: 'Void System.IdentityModel.Selectors.SecurityTokenRequirement.set_IsOptionalToken(Boolean)'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Stack trace: &lt;br /&gt;at System.ServiceModel.Security.SecurityProtocol.AddSupportingTokenProviders(SupportingTokenParameters supportingTokenParameters, Boolean isOptional, IList`1 providerSpecList)&lt;br /&gt;at System.ServiceModel.Security.SecurityProtocol.OnOpen(TimeSpan timeout)&lt;br /&gt;at System.ServiceModel.Security.WrapperSecurityCommunicationObject.OnOpen(TimeSpan timeout)&lt;br /&gt;at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)&lt;br /&gt;at System.ServiceModel.Channels.SecurityChannelFactory`1.ClientSecurityChannel`1.OnOpen(TimeSpan timeout)&lt;br /&gt;at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)&lt;br /&gt;at System.ServiceModel.Channels.ServiceChannel.OnOpen(TimeSpan timeout)&lt;br /&gt;at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)&lt;br /&gt;at System.ServiceModel.Channels.ServiceChannel.CallOpenOnce.System.ServiceModel.Channels.ServiceChannel.ICallOnce.Call(ServiceChannel channel, TimeSpan timeout)&lt;br /&gt;at System.ServiceModel.Channels.ServiceChannel.CallOnceManager.CallOnce(TimeSpan timeout, CallOnceManager cascade)&lt;br /&gt;at System.ServiceModel.Channels.ServiceChannel.EnsureOpened(TimeSpan timeout)&lt;br /&gt;at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)&lt;br /&gt;at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)&lt;br /&gt;at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)&lt;br /&gt;at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)&lt;br /&gt;&lt;br /&gt;The solution:&lt;br /&gt;&lt;a href="http://code.msdn.microsoft.com/KB976394"&gt;KB976394 - WCF: Make OutgoingSupportingToken public&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/976394"&gt;http://support.microsoft.com/kb/976394&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blog.tinyshed.net/tinyshed/post/2010/06/28/Fix-SystemIdentityModelSelectorsSecurityTokenRequirementget_IsOptionalToken().aspx"&gt;http://blog.tinyshed.net/tinyshed/post/2010/06/28/Fix-SystemIdentityModelSelectorsSecurityTokenRequirementget_IsOptionalToken().aspx&lt;/a&gt;&amp;nbsp;&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/6023216877398324826-1046577941825504637?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/1046577941825504637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=1046577941825504637' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/1046577941825504637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/1046577941825504637'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2010/07/wcf-method-not-found-only-effects-soap.html' title='WCF Method not found only effects SOAP services'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-1255808770919533541</id><published>2010-01-29T11:09:00.004-06:00</published><updated>2010-01-29T11:13:27.691-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='HttpWebRequest'/><category scheme='http://www.blogger.com/atom/ns#' term='WebRequest'/><category scheme='http://www.blogger.com/atom/ns#' term='CF'/><title type='text'>CF HttpWebRequest does not allow writing to the request stream by default</title><content type='html'>While trying to send data via a request stream, I ran into this error in the compact framework:&lt;br /&gt;ex = {"Either ContentLength must be set to a non-negative number, or SendChunked set to true in order to perform the write operation when AllowWriteStreamBuffering is disabled."}&lt;br /&gt;&lt;br /&gt;This was a bit confusing since I didn't get this error when running from a windows client.&amp;nbsp; I finally figured out that I have to allow writing to the stream:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;private void SendData(WebRequest request, object dto)&lt;br /&gt;{&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;&amp;nbsp;&amp;nbsp; // I had to add this for the CF framework. It isn't true by default.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: yellow;"&gt;&amp;nbsp;&amp;nbsp; if (request is HttpWebRequest)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ((HttpWebRequest) request).AllowWriteStreamBuffering = true;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp; using (Stream requestStream = request.GetRequestStream())&lt;br /&gt;&amp;nbsp;  {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (IsJsonRequest(request))&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; SendDataAsJson(requestStream, dto);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else SendDataAsXml(requestStream, dto);&lt;br /&gt; &amp;nbsp;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-1255808770919533541?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/1255808770919533541/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=1255808770919533541' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/1255808770919533541'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/1255808770919533541'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2010/01/cf-httpwebrequest-does-not-allow.html' title='CF HttpWebRequest does not allow writing to the request stream by default'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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-6023216877398324826.post-8868145668890181730</id><published>2010-01-29T10:59:00.002-06:00</published><updated>2010-01-29T11:01:56.248-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='UnitTesting'/><category scheme='http://www.blogger.com/atom/ns#' term='MSUnit'/><title type='text'>MSUnit toolbar does not work or is grayed out</title><content type='html'>If you have a library with MSUnit tests in it (probably because you converted MBUnit or NUnit tests to MSUnit tests) and the MSUnit toolbar will not work (stays grayed out), you are probably missing the ProjectTypeGuids. The line your missing from the library project file in the top most PropertyGroup is this one:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;lt;projecttypeguids&amp;gt;{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}&amp;lt;/projecttypeguids&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;The line above identifies the project as a test project ({3AC096D0-A1C2-E12C-1390-A8335801FDAB}) in the C# ({FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}) language.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Reference that I found after the fact:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.mokesit.com/Blogs/tabid/89/EntryID/11/Default.aspx"&gt;http://www.mokesit.com/Blogs/tabid/89/EntryID/11/Default.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.infosupport.com/blogs/raimondb/archive/2005/05/03/Converting-a-NUnit-project-to-Microsoft-UnitTest-project.aspx"&gt;http://blogs.infosupport.com/blogs/raimondb/archive/2005/05/03/Converting-a-NUnit-project-to-Microsoft-UnitTest-project.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://onlinecoder.blogspot.com/2009/09/visual-studio-projects-project-type.html"&gt;http://onlinecoder.blogspot.com/2009/09/visual-studio-projects-project-type.html&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&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/6023216877398324826-8868145668890181730?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/8868145668890181730/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=8868145668890181730' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/8868145668890181730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/8868145668890181730'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2010/01/msunit-toolbar-does-not-work-or-is.html' title='MSUnit toolbar does not work or is grayed out'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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-6023216877398324826.post-6178721920439565732</id><published>2009-12-04T12:08:00.003-06:00</published><updated>2009-12-04T12:27:33.325-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='DataContractJsonSerializer'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>JSON Serialization</title><content type='html'>&lt;em&gt;&lt;strong&gt;The Problem:&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;Here is the error that took me a few days of back-and-forth with an India programming team to figure out: &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DateTime values that are greater than DateTime.MaxValue or smaller than DateTime.MinValue when converted to UTC cannot be serialized to JSON.&lt;/strong&gt;&lt;br /&gt;   at System.Runtime.Serialization.Json.JsonWriterDelegator.WriteDateTime(DateTime value)&lt;br /&gt;   at System.Runtime.Serialization.XmlWriterDelegator.WriteDateTime(DateTime value, XmlDictionaryString name, XmlDictionaryString ns)&lt;br /&gt;   &lt;br /&gt;&lt;br /&gt;&lt;em&gt;&lt;strong&gt;The Solution:&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;I found that I had an uninitialized date time property (meaning it was equal to DateTime.MinValue) in my data transfer object (DTO).  If your WEST of GMT, this doesn't cause a problem; however, if your EAST of GMT, the DataContractJsonSerializer will puke.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-6178721920439565732?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/6178721920439565732/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=6178721920439565732' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/6178721920439565732'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/6178721920439565732'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2009/12/json-serialization.html' title='JSON Serialization'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-177428447338663575</id><published>2009-11-07T08:40:00.002-06:00</published><updated>2009-11-07T08:58:23.201-06:00</updated><title type='text'>WCF REST HttpStatusCode.Unauthorized status code does not work</title><content type='html'>Alternate title:  WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.Unauthorized does not work.&lt;br /&gt;Alternate title:  HttpStatusCode.Unauthorized turned into HttpStatusCode.NotFound&lt;br /&gt;&lt;br /&gt;The problem:&lt;br /&gt;I spent at least three hours tracking this stupid thing down.  The problem that I ran into was Forms Authentication.  What's happening is that I am returning HttpStatusCode.Unauthorized (401), but forms authentication is routing the error to the login page.  If you don't have a Login.aspx, you will get a resource not found error (HttpStatusCode.NotFound - 404).&lt;br /&gt;&lt;br /&gt;If you can change your authentication mode to Windows and the problem goes away, you have this problem. &lt;br /&gt;OR&lt;br /&gt;If you use the browser to hit your REST web service that requires authentication (it returns a 401 status code) and it routes you to your aspx login screen, you have this problem.&lt;br /&gt;&lt;br /&gt;Possible solutions:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Check out this MSDN article: &lt;a href="http://msdn.microsoft.com/en-us/library/aa479391.aspx"&gt;Supporting HTTP Authentication and Forms Authentication in a Single ASP.NET Web  Site &lt;/a&gt;.  If for some reason this link dies, search for Mixed Authentication Disposition ASP.NET Module (MADAM), which the name of the HttpModule that the MSDN article talks about that allows you to use both HTTP authentication (in this case basic/digest) and Forms authentication in the same web site.&lt;/li&gt;&lt;li&gt;I did run across a couple of post were people wanted to use both Windows and Forms authentication together.  In those post, it was suggested that the people create a virtual directory in IIS so that you could have two different web.config that specify different authentication methods.  I don't know if this will work for this problem, but it is a possible alternative.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="jsCall();" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-177428447338663575?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/177428447338663575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=177428447338663575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/177428447338663575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/177428447338663575'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2009/11/wcf-rest-httpstatuscodeunauthorized.html' title='WCF REST HttpStatusCode.Unauthorized status code does not work'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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-6023216877398324826.post-1227402854728661929</id><published>2009-09-10T11:00:00.012-05:00</published><updated>2010-03-03T12:58:52.162-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='RemoteDesktop'/><title type='text'>Remote Desktop Drive sharing not working</title><content type='html'>I ran into a Windows 2003 server on our local network today that would not allow me to share drives so that I could upload/download files to/from the server.&lt;br /&gt;&lt;br /&gt;My remote desktop settings look like this:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_sFpwqI3xpuQ/SqkkGI9h6eI/AAAAAAAAARM/ClVAN7a2vHU/s1600-h/RemoteDesktop.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5379870917774141922" src="http://1.bp.blogspot.com/_sFpwqI3xpuQ/SqkkGI9h6eI/AAAAAAAAARM/ClVAN7a2vHU/s400/RemoteDesktop.jpg" style="height: 220px; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;However, when I connected and opened up windows explorer, my local drives did not appear in the tree view on the left.&lt;br /&gt;&lt;br /&gt;Update -&amp;gt;&amp;nbsp; There two ways to fix this.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Way 1:&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;After a little bit of digging, I discovered that the group policy for drive sharing (a.k.a. "Drive redirection") was not configured on the Windows 2003 server. This can be fixed by using the MMC snap in called "Group Policy Object Editor":&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_sFpwqI3xpuQ/Sqkk70U6ZDI/AAAAAAAAARU/80qp51evnnA/s1600-h/GroupPolicyEditor1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5379871839948006450" src="http://1.bp.blogspot.com/_sFpwqI3xpuQ/Sqkk70U6ZDI/AAAAAAAAARU/80qp51evnnA/s400/GroupPolicyEditor1.jpg" style="height: 250px; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;After navigating to "\Local Computer Policy\Computer Configuration\Administrative Templates\Windows Components\Terminal Services\Client/Server data redirect", I changed the "Do not allow drive redirection" from "Not Configured" to "Disabled" under and it worked fine afterward:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_sFpwqI3xpuQ/SqklQyphkkI/AAAAAAAAARc/cUFCniJHreE/s1600-h/GroupPolicyEditor2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5379872200274842178" src="http://4.bp.blogspot.com/_sFpwqI3xpuQ/SqklQyphkkI/AAAAAAAAARc/cUFCniJHreE/s400/GroupPolicyEditor2.jpg" style="height: 250px; width: 400px;" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;Way 2:&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;&lt;div&gt;This can also be accomplished this way on&amp;nbsp;Windows Server 2003:&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_sFpwqI3xpuQ/S46wExIG-fI/AAAAAAAAAR4/a6X1ZJe1inQ/s1600-h/RDP.jpg" imageanchor="1" style="cssfloat: left; margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="332" kt="true" src="http://2.bp.blogspot.com/_sFpwqI3xpuQ/S46wExIG-fI/AAAAAAAAAR4/a6X1ZJe1inQ/s640/RDP.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Steps from the Administrative tools window under the control panel.&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;ol&gt;&lt;li&gt;Double click on "Terminal Service Configuration"&lt;/li&gt;&lt;li&gt;Left click "Connections" on the dialog&lt;/li&gt;&lt;li&gt;Right click "Rdp-Tcp" in the right hand windows.&lt;/li&gt;&lt;li&gt;Uncheck "Drive mapping" on the "Client Settings" tab.&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/6023216877398324826-1227402854728661929?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/1227402854728661929/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=1227402854728661929' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/1227402854728661929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/1227402854728661929'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2009/09/remote-desktop-drive-sharing-not.html' title='Remote Desktop Drive sharing not working'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_sFpwqI3xpuQ/SqkkGI9h6eI/AAAAAAAAARM/ClVAN7a2vHU/s72-c/RemoteDesktop.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-1654669299202584007</id><published>2009-08-20T03:58:00.010-05:00</published><updated>2009-08-20T04:19:11.396-05:00</updated><title type='text'>Setting F5 Persistence</title><content type='html'>This is a follow up post for a question posted &lt;a href="http://daveonsoftware.blogspot.com/2007/08/load-balancer-persistence-sticky.html"&gt;here&lt;/a&gt;. I'm am NOT an F5 expert NOR do I work on them. My brother was nice enough to put this together.&lt;br /&gt;&lt;br /&gt;NOTE: The Persistence is set on the VIP (Virtual IP Address) and NOT the Pool. This is because your pool can be altered and changed due to the application of iRules, so they brought the Persistence up one level to compensate for this functionality.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Under Main -&gt; Local Traffic -&gt; Virtual Servers&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sFpwqI3xpuQ/So0UFxSjbGI/AAAAAAAAARE/AYCYKfXe8Gg/s1600-h/F5-1.jpg"&gt;&lt;img style="cursor: pointer; width: 233px; height: 400px;" src="http://2.bp.blogspot.com/_sFpwqI3xpuQ/So0UFxSjbGI/AAAAAAAAARE/AYCYKfXe8Gg/s400/F5-1.jpg" alt="" id="BLOGGER_PHOTO_ID_5371972019885927522" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Pick VIP and go to Resources&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_sFpwqI3xpuQ/So0SBDguabI/AAAAAAAAAQc/omRm1-mCsMc/s1600-h/F5-2.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 192px;" src="http://2.bp.blogspot.com/_sFpwqI3xpuQ/So0SBDguabI/AAAAAAAAAQc/omRm1-mCsMc/s400/F5-2.jpg" alt="" id="BLOGGER_PHOTO_ID_5371969739854604722" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Resources view:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_sFpwqI3xpuQ/So0SSGhoa7I/AAAAAAAAAQk/u1UjzEIPT14/s1600-h/F5-3.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 132px;" src="http://4.bp.blogspot.com/_sFpwqI3xpuQ/So0SSGhoa7I/AAAAAAAAAQk/u1UjzEIPT14/s400/F5-3.jpg" alt="" id="BLOGGER_PHOTO_ID_5371970032721488818" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To change your Persistence Profile select a Primary and/or Secondary&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_sFpwqI3xpuQ/So0Sb5Oc0SI/AAAAAAAAAQs/qURrK_KXA7Q/s1600-h/F5-4.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 127px;" src="http://3.bp.blogspot.com/_sFpwqI3xpuQ/So0Sb5Oc0SI/AAAAAAAAAQs/qURrK_KXA7Q/s400/F5-4.jpg" alt="" id="BLOGGER_PHOTO_ID_5371970200950067490" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Types:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Source Address&lt;/li&gt;&lt;li&gt;Destination Address&lt;/li&gt;&lt;li&gt;Cookie (Requires HTTP profile to be active)&lt;/li&gt;&lt;li&gt;Hash&lt;/li&gt;&lt;/ul&gt;There are many others (and you can create CUSTOM types):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sFpwqI3xpuQ/So0SlDkBLUI/AAAAAAAAAQ0/5wmaWj1kbMg/s1600-h/F5-5.jpg"&gt;&lt;img style="cursor: pointer; width: 183px; height: 400px;" src="http://1.bp.blogspot.com/_sFpwqI3xpuQ/So0SlDkBLUI/AAAAAAAAAQ0/5wmaWj1kbMg/s400/F5-5.jpg" alt="" id="BLOGGER_PHOTO_ID_5371970358343707970" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a base view of editable items on a VIP:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_sFpwqI3xpuQ/So0SsII5I3I/AAAAAAAAAQ8/GkwnxFjcwKo/s1600-h/F5-6.jpg"&gt;&lt;img style="cursor: pointer; width: 324px; height: 400px;" src="http://1.bp.blogspot.com/_sFpwqI3xpuQ/So0SsII5I3I/AAAAAAAAAQ8/GkwnxFjcwKo/s400/F5-6.jpg" alt="" id="BLOGGER_PHOTO_ID_5371970479831196530" border="0" /&gt;&lt;/a&gt;&lt;input id="gwProxy" type="hidden"&gt;&lt;!--Session data--&gt;&lt;input onclick="jsCall();" id="jsProxy" type="hidden"&gt;&lt;div id="refHTML"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-1654669299202584007?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/1654669299202584007/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=1654669299202584007' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/1654669299202584007'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/1654669299202584007'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2009/08/setting-f5-persistence.html' title='Setting F5 Persistence'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_sFpwqI3xpuQ/So0UFxSjbGI/AAAAAAAAARE/AYCYKfXe8Gg/s72-c/F5-1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-3246825629848565605</id><published>2009-07-09T11:39:00.004-05:00</published><updated>2009-07-09T11:56:34.578-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='NHibernate'/><title type='text'>CurrentSessionContext call results in "No current session context configured."</title><content type='html'>Well, I was playing with NHibernate today and trying to create a single session in a windows application that would stay open till I was ready to close it.  I was using CurrentSessionContext.Bind(someSession) when I generated this error: "No current session context configured."  After some searching around, I discovered that I was missing a line in my Hibernate.cfg.xml file.&lt;br /&gt;&lt;br /&gt;&amp;lt name="current_session_context_class" &amp;gt thread_static &amp;lt /property &amp;gt&lt;br /&gt;&lt;br /&gt;Apparently, it can have several settings:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;managed_web&lt;/li&gt;&lt;li&gt;call&lt;/li&gt;&lt;li&gt;thread_static&lt;/li&gt;&lt;li&gt;web&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://knol.google.com/k/fabio-maulo/nhibernate-chapter-2/1nr4enxv3dpeq/6#"&gt;See 2.3. Contextual Sessions at the bottom of the page&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://groups.google.com/group/nhusers/browse_thread/thread/4489b6c3040b90b8"&gt;Useful Google groups discussion&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://hackingon.net/post/NHibernate-Session-Per-Request-with-ASPNET-MVC.aspx"&gt;Web setting usage that looks interesting&lt;/a&gt;&lt;br /&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/6023216877398324826-3246825629848565605?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/3246825629848565605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=3246825629848565605' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/3246825629848565605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/3246825629848565605'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2009/07/currentsessioncontext-call-results-in.html' title='CurrentSessionContext call results in &quot;No current session context configured.&quot;'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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-6023216877398324826.post-4654227533291803916</id><published>2009-06-25T10:28:00.003-05:00</published><updated>2009-06-25T10:42:38.022-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WPF'/><title type='text'>RichTextBox with better spacing</title><content type='html'>It took a bit of looking around today to figure out how to create a resource file entry to style my RichTextBox so that it doesn't have ridiculous spacing.  I found &lt;a href="http://stackoverflow.com/questions/325075/how-do-i-change-richtextbox-paragraph-spacing/445897#445897"&gt;this&lt;/a&gt;, which shows how to do it inside the page or window.  However, I wanted to put it in a resource file so that I could reuse it.  I finally came up with this:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;br /&gt;    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&amp;gt;&lt;br /&gt;    &amp;lt;Style x:Key="RichTextWithBetterSpacing" TargetType="{x:Type RichTextBox}"&amp;gt;&lt;br /&gt;        &amp;lt;Setter Property="FontSize" Value="12"/&amp;gt;&lt;br /&gt;        &amp;lt;Setter Property="FontFamily" Value="Arial"/&amp;gt;&lt;br /&gt;        &amp;lt;Style.Resources&amp;gt;&lt;br /&gt;            &amp;lt;Style TargetType="{x:Type Paragraph}"&amp;gt;&lt;br /&gt;                &amp;lt;Setter Property="Margin" Value="0"/&amp;gt;&lt;br /&gt;            &amp;lt;/Style&amp;gt;&lt;br /&gt;        &amp;lt;/Style.Resources&amp;gt;                &lt;br /&gt;    &amp;lt;/Style&amp;gt;&lt;br /&gt;&amp;lt;/ResourceDictionary&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-4654227533291803916?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/4654227533291803916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=4654227533291803916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/4654227533291803916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/4654227533291803916'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2009/06/richtextbox-with-better-spacing.html' title='RichTextBox with better spacing'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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-6023216877398324826.post-143794259649200498</id><published>2008-12-10T15:24:00.000-06:00</published><updated>2008-12-10T15:39:27.359-06:00</updated><title type='text'>Custom RoleProvider notes</title><content type='html'>I finally completed my custom RoleProvider that uses NHibernate to retrieve data from the database. Below I have listed my notes on this topic.&lt;br /&gt;&lt;br /&gt;Issue: My RoleProvider would not work if I overrode the default constructor.&lt;br /&gt;Solution:  Override the Initialize method and put your code there instead.&lt;br /&gt;&lt;br /&gt;Issue:  The RoleProvider class cannot access HttpContext.Current.Session.&lt;br /&gt;Solution:  There really isn't a solution.  It's just a fact.&lt;br /&gt;&lt;br /&gt;Resources:&lt;a href="http://davidhayden.com/blog/dave/archive/2007/10/17/CreateCustomRoleProviderASPNETRolePermissionsSecurity.aspx"&gt;&lt;br /&gt;&lt;/a&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://davidhayden.com/blog/dave/archive/2007/10/17/CreateCustomRoleProviderASPNETRolePermissionsSecurity.aspx"&gt;http://davidhayden.com/blog/dave/archive/2007/10/17/CreateCustomRoleProviderASPNETRolePermissionsSecurity.aspx&lt;/a&gt;&lt;br /&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/6023216877398324826-143794259649200498?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/143794259649200498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=143794259649200498' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/143794259649200498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/143794259649200498'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2008/12/custom-roleprovider-notes.html' title='Custom RoleProvider notes'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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-6023216877398324826.post-3981281147549977575</id><published>2008-12-10T15:04:00.004-06:00</published><updated>2008-12-10T15:40:15.728-06:00</updated><title type='text'>Custom MembershipProvider  notes</title><content type='html'>I finally completed my custom MembershipProvider that uses NHibernate to retrieve data from the database. Below I have listed my notes on this topic.&lt;br /&gt;&lt;br /&gt;Issue:  I could not get the "Web Site Administration Tool" to create a user without giving me an error.&lt;br /&gt;&lt;br /&gt;Solution: Make sure that the following property returns true:&lt;br /&gt;public override bool RequiresQuestionAndAnswer&lt;br /&gt;If it was false, I would get a generic error that made absolutely no sense:&lt;br /&gt;&lt;br /&gt;The following message may help in diagnosing the problem: &lt;span style="font-weight: bold;"&gt;Exception has been thrown by the target of an invocation. at System.RuntimeMethodHandle._InvokeMethodFast(Object target, Object[] arguments, SignatureStruct&amp;amp; sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) at System.RuntimeMethodHandle.InvokeMethodFast(Object target, Object[] arguments, Signature sig, MethodAttributes methodAttributes, RuntimeTypeHandle typeOwner) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks) at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture) at System.Web.Administration.WebAdminMembershipProvider.CallWebAdminMembershipProviderHelperMethodOutParams(String methodName, Object[] parameters, Type[] paramTypes) at System.Web.Administration.WebAdminMembershipProvider.CreateUser(String username, String password, String email, String passwordQuestion, String passwordAnswer, Boolean isApproved, Object providerUserKey, MembershipCreateStatus&amp;amp; status) at System.Web.UI.WebControls.CreateUserWizard.AttemptCreateUser() at System.Web.UI.WebControls.CreateUserWizard.OnNextButtonClick(WizardNavigationEventArgs e) at System.Web.UI.WebControls.Wizard.OnBubbleEvent(Object source, EventArgs e) at System.Web.UI.WebControls.CreateUserWizard.OnBubbleEvent(Object source, EventArgs e) at System.Web.UI.WebControls.Wizard.WizardChildTable.OnBubbleEvent(Object source, EventArgs args) at System.Web.UI.Control.RaiseBubbleEvent(Object source, EventArgs args) at System.Web.UI.WebControls.Button.OnCommand(CommandEventArgs e) at System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) at System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Issue:  I ran into a couple of examples that verify the password by unencoding the one in the database and then comparing it to the user's entry.&lt;br /&gt;&lt;br /&gt;Solution:  I recommend that you do it the same way that Microsoft did it.  That is to encode the user's entry and compare it to the encoded database entry.  It eliminates the need to have an unencode method.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Other things worth noting:&lt;br /&gt;&lt;br /&gt;If you are going to use Encryption encoding (as opposed to clear text or hash encoding), don't forget to generate your own MachineKey.  Here are a few link on that topic:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://aspnetresources.com/tools/keycreator.aspx"&gt;http://aspnetresources.com/tools/keycreator.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms998288.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms998288.aspx&lt;/a&gt;  (see bottom for code example)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Resources:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://davidhayden.com/blog/dave/archive/2007/10/11/CreateCustomMembershipProviderASPNETWebsiteSecurity.aspx"&gt;http://davidhayden.com/blog/dave/archive/2007/10/11/CreateCustomMembershipProviderASPNETWebsiteSecurity.aspx&lt;/a&gt;&lt;br /&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/6023216877398324826-3981281147549977575?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/3981281147549977575/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=3981281147549977575' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/3981281147549977575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/3981281147549977575'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2008/12/custom-membershipprovider-gotchas.html' title='Custom MembershipProvider  notes'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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-6023216877398324826.post-2965602185514117304</id><published>2008-12-04T16:30:00.004-06:00</published><updated>2008-12-04T17:14:28.376-06:00</updated><title type='text'>WCF &amp; the IIS Require secure channel (ssl) setting</title><content type='html'>After turning on "Require secure channel (SSL)" on the IIS 6.0 Directory security tab (secure communications dialog), I lost several hours today trying to figure out why my WCF services stopped working and started giving me this error:&lt;br /&gt;[System.ServiceModel.ServiceActivationException] = {"The requested service, 'https://www.Dave.com/DoIt/MyService.svc' could not be activated. See the server's diagnostic trace logs for more information."}&lt;br /&gt;&lt;br /&gt;I tried a variety of things, but when I finally broke down and ran the diagnostic trace I got the following:&lt;br /&gt;The service '/DoIt/MyService.svc' cannot be activated due to an exception during compilation. The exception message is: Could not find a base address that matches scheme http for the endpoint with binding MetadataExchangeHttpBinding. Registered base address schemes are [https]..&lt;br /&gt;&lt;br /&gt;All my services use https to send data; however, my metadata exchange binding, which I intended to remove/comment out later, use http. When I changed all my metadata exchanged end points to use mexHttpsBinding instead of mexHttpBinding and all my behaviors to use &amp;ltservicemetadata httpsgetenabled="true"&amp;gt instead of &amp;ltservicemetadata httpgetenabled="true"&amp;gt, everything started working again.&lt;br /&gt;&lt;br /&gt;I figured that the http endpoints would just be ignored or if accessed permissioned denied because all addresses must use a secure channel (https).  It appears that I was wrong and that it causes a compilation error.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-2965602185514117304?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/2965602185514117304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=2965602185514117304' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/2965602185514117304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/2965602185514117304'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2008/12/wcf-iis-require-secure-channel.html' title='WCF &amp; the IIS Require secure channel (ssl) setting'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-3849009002483797811</id><published>2008-07-30T18:24:00.007-05:00</published><updated>2009-12-11T10:15:47.742-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='serialization'/><category scheme='http://www.blogger.com/atom/ns#' term='DateTime'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>WCF DateTime field adjusted automatically for time zone</title><content type='html'>Well, I got bit by DateTime serialization yesterday. Our server is in the U.S. Central Standard Time (CST) zone and our client is in the U.S. Eastern Standard Time (EST) zone. All data saved in the database is relative to the client and NOT the server. So when the client wants to see all data for today, only the date is specified using DateTime.Today. So when the EST client sent a date of 7/29/08 00:00:00 AM to our WCF webservice on the CST server, the date was converted to 7/28/08 11:00:00 PM. The symptom from the client's point of view was that they could never retrieve data for today.&lt;br /&gt;&lt;br /&gt;According to &lt;a href="http://msdn.microsoft.com/en-us/library/ms973825.aspx"&gt;Coding Best Practices Using DateTime in the .NET Framework&lt;/a&gt; there are several ways to work around this; however, they missed one. If you change your dates so that DateTimeKind is unspecified, the XML serializer will NOT try to convert them. For example, this code will convert a date to DateTimeKind.Unspecified:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;DateTime newDate = DateTime.SpecifyKind(oldDate, DateTimeKind.Unspecified); &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms973825.aspx"&gt;Coding Best Practices Using DateTime in the .NET Framework&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/6023216877398324826-3849009002483797811?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/3849009002483797811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=3849009002483797811' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/3849009002483797811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/3849009002483797811'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2008/07/wcf-datetime-field-adjusted.html' title='WCF DateTime field adjusted automatically for time zone'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-54261417809863777</id><published>2008-04-16T12:22:00.003-05:00</published><updated>2008-04-16T12:36:09.161-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Nant'/><title type='text'>NAnt and unsafe code</title><content type='html'>&lt;div&gt;Problem:&lt;br /&gt;I lost a few minutes today to this little compiler error:&lt;br /&gt;CS0227: Unsafe code may only appear if compiling with /unsafe&lt;br /&gt;&lt;br /&gt;I was targeting a new production VS2005 solution and I kept getting this error. I opened and compiled the solution and everything worked fine.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;The problem was that the "Allow unsafe code" check box on the project's build tab was selected for debug build, which is what I was building, and was NOT checked for the release build, which is what NAnt was building.&lt;br /&gt;&lt;a href="http://bp1.blogger.com/_sFpwqI3xpuQ/SAY48gmzdRI/AAAAAAAAAGs/O02-WWBlIIg/s1600-h/AllowUnsafeCode.png"&gt;&lt;img id="BLOGGER_PHOTO_ID_5189898232787072274" style="CURSOR: hand" alt="" src="http://bp1.blogger.com/_sFpwqI3xpuQ/SAY48gmzdRI/AAAAAAAAAGs/O02-WWBlIIg/s400/AllowUnsafeCode.png" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_sFpwqI3xpuQ/SAY3wwmzdQI/AAAAAAAAAGk/F8DEDEsneCo/s1600-h/AllowUnsafeCode.png"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://bp2.blogger.com/_sFpwqI3xpuQ/SAY3ZwmzdPI/AAAAAAAAAGc/OsNg98gYJSs/s1600-h/AllowUnsafeCode.png"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-54261417809863777?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/54261417809863777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=54261417809863777' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/54261417809863777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/54261417809863777'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2008/04/nant-and-unsafe-code.html' title='NAnt and unsafe code'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_sFpwqI3xpuQ/SAY48gmzdRI/AAAAAAAAAGs/O02-WWBlIIg/s72-c/AllowUnsafeCode.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-1044301513087350025</id><published>2007-11-30T22:33:00.000-06:00</published><updated>2007-11-30T23:20:49.586-06:00</updated><title type='text'>Dispatcher versus SynchronizationContext</title><content type='html'>Today I had the pleasure of playing with the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.threading.dispatcher.aspx"&gt;Dispatcher&lt;/a&gt; and &lt;a href="http://msdn2.microsoft.com/en-us/library/system.threading.synchronizationcontext.aspx"&gt;SynchronizationContext&lt;/a&gt; classes.  I found that the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.threading.dispatcher.aspx"&gt;Dispatcher&lt;/a&gt; class is useful when your sure that you are calling within the context of the user interface thread and the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.threading.synchronizationcontext.aspx"&gt;SynchronizationContext&lt;/a&gt; is useful when you're not quite sure.&lt;br /&gt;&lt;br /&gt;If you obtain your &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.threading.dispatcher.aspx"&gt;Dispatcher&lt;/a&gt; class using the static Dispatcher.CurrentDispatcher method on some non-UI thread and call the BeginInvoke method, nothing will happen (No exception, no warning, nada).  However, if you obtain your &lt;a href="http://msdn2.microsoft.com/en-us/library/system.threading.synchronizationcontext.aspx"&gt;SynchronizationContext&lt;/a&gt; class via the static SynchronizationContext.Current method, it will return null if the thread is not a UI thread.  This feedback is extremely useful since it allows you to react to both a UI thread and a non-UI thread accordingly.&lt;br /&gt;&lt;br /&gt;Here is an example using the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.windows.threading.dispatcher.aspx"&gt;Dispatcher&lt;/a&gt; class:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Threading;&lt;br /&gt;using System.Windows.Threading; // WindowsBase.dll&lt;br /&gt;&lt;br /&gt;namespace Test&lt;br /&gt;{&lt;br /&gt;public delegate void WriteTextDelegate(string message);&lt;br /&gt;&lt;br /&gt;public class DispatcherTest&lt;br /&gt;{&lt;br /&gt;public void Start()&lt;br /&gt;{&lt;br /&gt;   // Calling thread determines Dispatcher&lt;br /&gt;   m_Dispatcher = Dispatcher.CurrentDispatcher;&lt;br /&gt;&lt;br /&gt;   if (m_Timer == null)&lt;br /&gt;      m_Timer = new Timer(new TimerCallback(WriteText),&lt;br /&gt;        null, 1000, 2000);&lt;br /&gt;   else m_Timer.Change(1000, 2000);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void Stop()&lt;br /&gt;{&lt;br /&gt;   if (m_Timer != null)&lt;br /&gt;     m_Timer.Change(Timeout.Infinite, Timeout.Infinite);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public event WriteTextDelegate Message;&lt;br /&gt;&lt;br /&gt;private Timer m_Timer;&lt;br /&gt;private System.Windows.Threading.Dispatcher m_Dispatcher;&lt;br /&gt;&lt;br /&gt;private void WriteText(object state)&lt;br /&gt;{&lt;br /&gt;   m_Dispatcher.BeginInvoke(&lt;br /&gt;      System.Windows.Threading.DispatcherPriority.Normal,&lt;br /&gt;      new WriteTextDelegate(OnMessage),&lt;br /&gt;      DateTime.Now.ToString());&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void OnMessage(string message)&lt;br /&gt;{&lt;br /&gt;   if (Message != null)&lt;br /&gt;      Message(message);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here is an example using the &lt;a href="http://msdn2.microsoft.com/en-us/library/system.threading.synchronizationcontext.aspx"&gt;SynchronizationContext&lt;/a&gt; class:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Threading;&lt;br /&gt;&lt;br /&gt;namespace Test&lt;br /&gt;{&lt;br /&gt;public delegate void WriteSomeTextDelegate(string message);&lt;br /&gt;&lt;br /&gt;public class SyncTest&lt;br /&gt;{&lt;br /&gt;public void Start()&lt;br /&gt;{&lt;br /&gt;   // Calling thread determines SynchronizationContext&lt;br /&gt;   m_Context = SynchronizationContext.Current;&lt;br /&gt;&lt;br /&gt;   if (m_Timer == null)&lt;br /&gt;      m_Timer = new Timer(new TimerCallback(WriteText),&lt;br /&gt;        null, 1000, 2000);&lt;br /&gt;   else m_Timer.Change(1000, 2000);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void Stop()&lt;br /&gt;{&lt;br /&gt;   if (m_Timer != null)&lt;br /&gt;     m_Timer.Change(Timeout.Infinite, Timeout.Infinite);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public event WriteSomeTextDelegate Message;&lt;br /&gt;&lt;br /&gt;private System.Threading.Timer m_Timer;&lt;br /&gt;private System.Threading.SynchronizationContext m_Context;&lt;br /&gt;&lt;br /&gt;private void WriteText(object state)&lt;br /&gt;{&lt;br /&gt;   string message = DateTime.Now.ToString();&lt;br /&gt;&lt;br /&gt;   if (m_Context != null)&lt;br /&gt;   {&lt;br /&gt;      m_Context.Post(new SendOrPostCallback(PostCallback), message);&lt;br /&gt;   }&lt;br /&gt;   else OnMessage(message);  // non-UI thread called Start&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void OnMessage(string message)&lt;br /&gt;{&lt;br /&gt;   if (Message != null)&lt;br /&gt;      Message(message);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void PostCallback(object state)&lt;br /&gt;{&lt;br /&gt;   if (state is string)&lt;br /&gt;   {&lt;br /&gt;      OnMessage(state as string);&lt;br /&gt;   }&lt;br /&gt;   else throw new ArgumentException("State should be a string");&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I used Reflector to look inside the WindowsBase.dll; however, I had problems finding the dll.  I expected to find it in a directory below the usual location (C:\ Windows\ Microsoft.NET\ Framework\ v3.0); however,  it was in this directory: C:\ Program Files\ Reference Assemblies\ Microsoft\ Framework\ v3.0&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/stevencohn/archive/2007/02/05/asynchronous-operations.aspx"&gt;WCF: Asynchronous Operations&lt;/a&gt;&lt;br /&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/6023216877398324826-1044301513087350025?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/1044301513087350025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=1044301513087350025' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/1044301513087350025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/1044301513087350025'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2007/11/dispatcher-versus-synchronizationcontex.html' title='Dispatcher versus SynchronizationContext'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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-6023216877398324826.post-5840485668314894329</id><published>2007-11-09T16:57:00.000-06:00</published><updated>2007-11-09T18:46:40.347-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>WCF Security Exception:  Timestamp is invalid because its creation time is in the future</title><content type='html'>Well, I ran into a real fun bug today that surfaced itself on the user's computer as a "Security Exception see Inner Exception".  Upon examining the  inner exception, it told me that  the message was incorrectly secured.  After placing some tracing on the server, I found this error message:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The security timestamp is invalid because its creation time ('11/9/2007 10:37:07 PM') is in the future. Current time is '11/9/2007 10:28:52 PM' and allowed clock skew is '00:05:00'.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;After fixing the user's clock, which was roughly 8 minutes fast, everything worked great.  The next question is "How do I increase the maximum skew time"?   It took a bit of searching to figure out that I need to create a custom binding to change the values.  Here is an example of how to do it:&lt;br /&gt;&lt;pre class="code" id="ctl00_LibFrame_ctl33other" space="preserve"&gt;&lt;br /&gt;&amp;lt;bindings&amp;gt;&lt;br /&gt;&amp;lt;customBinding&amp;gt;&lt;br /&gt; &amp;lt;binding name="MaxClockSkewBinding"&amp;gt;&lt;br /&gt;     &amp;lt;textMessageEncoding /&amp;gt;&lt;br /&gt;     &amp;lt;security authenticationMode="Kerberos"&amp;gt;&lt;br /&gt;        &amp;lt;localClientSettings maxClockSkew="00:07:00" /&amp;gt;&lt;br /&gt;        &amp;lt;localServiceSettings maxClockSkew="00:07:00" /&amp;gt;&lt;br /&gt;&lt;br /&gt;       &amp;lt;secureConversationBootstrap /&amp;gt;&lt;br /&gt;     &amp;lt;/security&amp;gt;&lt;br /&gt;     &amp;lt;httpTransport /&amp;gt;&lt;br /&gt; &amp;lt;/binding&amp;gt;&lt;br /&gt;&amp;lt;/customBinding&amp;gt;&lt;br /&gt;&amp;lt;/bindings&amp;gt;&lt;/pre&gt;&lt;br /&gt;For more information, see &lt;a href="http://msdn2.microsoft.com/en-us/library/aa738468.aspx"&gt;How To: Set a Max Clock Skew&lt;/a&gt; on MSDN.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;More References:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/aa347793.aspx"&gt;Custom Bindings&lt;/a&gt; page on MSDN shows the proper way to stack your collection of binding elements.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms730305.aspx"&gt;How To: Create a Custom Binding Using the SecurityBindingElement&lt;/a&gt; which shows how to build the a custom binding.&lt;br /&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/6023216877398324826-5840485668314894329?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/5840485668314894329/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=5840485668314894329' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/5840485668314894329'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/5840485668314894329'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2007/11/security-exception-timestamp-is-invalid.html' title='WCF Security Exception:  Timestamp is invalid because its creation time is in the future'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-3395184540857311825</id><published>2007-09-14T17:40:00.001-05:00</published><updated>2008-05-01T11:56:14.985-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redistributables'/><category scheme='http://www.blogger.com/atom/ns#' term='Click once'/><title type='text'>VS2008 Click Once application and .NET 3.0 redistributables</title><content type='html'>I had a problem today creating a .NET 3.0 platform, click-once application.  I wanted to distribute the .NET 3.0 platform along with the application so that users would not have to hunt for .NET 3.0 on Microsoft's Windows Update web site.  However,  I found that Visual Studio 2008 (beta 2) only has the redistributables for .NET 2.0 and .NET 3.5.&lt;br /&gt;&lt;br /&gt;I found a really nice post by Haaron  Gonzalez entitled "&lt;a href="http://msmvps.com/blogs/haarongonzalez/archive/2007/04/09/772757.aspx"&gt;How to include the .NET Framework 3.0 installer in your application setup&lt;/a&gt;"  that explains how to do this with VS2005 using the November CTP.  However, it still didn't explain how to fix the issue with VS2008 (beta 2).&lt;br /&gt;&lt;br /&gt;My solution&lt;br /&gt;&lt;ol&gt;&lt;li&gt;I installed the November CTP for Visual Studio 2005 on an old XP machine&lt;/li&gt;&lt;li&gt;Copied the package and language files of "C:\Program Files \Microsoft Visual Studio  8 \SDK \v2.0 \BootStrapper \Packages \NETFX30" to "C:\Program Files \Microsoft SDKs \Windows \V6.0A \Bootstrapper \Packages \NETFX30" on my Vista machine running VS 2008 (beta 2).&lt;/li&gt;&lt;li&gt;Downloaded the 32 bit version of the .NET 3.0 framework (&lt;a href="http://go.microsoft.com/fwlink/?LinkId=70848"&gt;http://go.microsoft.com/fwlink/?LinkId=70848&lt;/a&gt;) to "C:\Program Files \Microsoft SDKs \Windows \V6.0A \Bootstrapper \Packages \NETFX30 \dotnetfx3.exe"&lt;/li&gt;&lt;li&gt;Download the 64 bit version of the .NET 3.0 framework (&lt;a href="http://go.microsoft.com/fwlink/?LinkId=70849"&gt;http://go.microsoft.com/fwlink/?LinkId=70849&lt;/a&gt;) to "C:\Program Files \Microsoft SDKs \Windows \V6.0A \Bootstrapper \Packages \NETFX30 \dotnetfx3_x64.exe"&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;For information on generating the files yourself, see:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;a href="http://msmvps.com/blogs/haarongonzalez/archive/2007/04/09/772757.aspx"&gt;Haaron  Gonzalez                                                  Friday, September 14, 2007 6:02 PM response&lt;/a&gt; to my comment and the &lt;a style="font-weight: bold;" href="http://www.codeplex.com/bmg"&gt;lovely link&lt;/a&gt; he provided.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeplex.com/bmg"&gt;Bootstrapper Manifest Generator&lt;/a&gt; on &lt;a href="http://www.codeplex.com"&gt;CodePlex&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;Also see&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-3395184540857311825?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/3395184540857311825/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=3395184540857311825' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/3395184540857311825'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/3395184540857311825'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2007/09/vs2008-click-once-application-and-net.html' title='VS2008 Click Once application and .NET 3.0 redistributables'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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-6023216877398324826.post-4541020417213374990</id><published>2007-08-25T11:15:00.000-05:00</published><updated>2007-08-29T21:05:13.592-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='domain'/><category scheme='http://www.blogger.com/atom/ns#' term='Netdom'/><category scheme='http://www.blogger.com/atom/ns#' term='Vista'/><title type='text'>Problems adding a Vista machine to a domain</title><content type='html'>A few months ago, I had trouble adding a Windows Longhorn machine to our domain.  Yesterday, I experienced the problem again while trying to add my new laptop, which is running Windows Vista Ultimate, to our domain.  Personally, I think there is something wrong with our domain controller, but I can't prove it.  Plus, searching the web has revealed that only a select few of us unlucky individuals are experiencing this problem.  At any rate, I fixed the problem as follows:&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(0, 0, 153); font-weight: bold;"&gt;Update:  I recently sat down with a fellow co-worker and he managed to add his Vista machine to our domain using Step 3 &amp; 4 only.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 1:&lt;/span&gt;&lt;br /&gt;On the &lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;Local Security Policy form ch&lt;/span&gt;&lt;/span&gt;ange the &lt;span style="font-weight: bold; font-style: italic;" id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;&lt;span&gt;Network Security: LAN Manager authentication level&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; to the proper setting for your domain.&lt;br /&gt;&lt;br /&gt;I could not login to another computer on our domain much less add my computer to the domain until I adjusted my &lt;span style="font-weight: bold; font-style: italic;" id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;&lt;span&gt;Network Security: LAN Manager authentication level&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;   to &lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Send LM and NTLM - use NTLMv2 session security if negotiated&lt;/span&gt;&lt;span&gt;; however, &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;you might want to login to a share on an existing computer in your domain to see if you need to do this.  Even better,  check the &lt;span style="font-weight: bold; font-style: italic;" id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;&lt;span&gt;Network Security: LAN Manager authentication level&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; on an existing XP machine registered in your domain to get the correct setting.&lt;br /&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;&lt;br /&gt;How to get to &lt;/span&gt;&lt;/span&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;Local Security Policy form:&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;Start-&gt;Control Panel&lt;/span&gt;&lt;/span&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;-&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;System and Maintenance&lt;/span&gt;&lt;/span&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;-&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;Administrative Tools&lt;/span&gt;&lt;/span&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;-&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;Local Security Policy&lt;br /&gt;&lt;br /&gt;On the Local Security Policy form, click on the Security Options tree node:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;Security Settings-&gt;&lt;/span&gt;&lt;/span&gt;Local Policies-&gt;Security Options&lt;br /&gt;&lt;br /&gt;In the policy column, look for &lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;Network Security: LAN Manager authentication level&lt;/span&gt;&lt;br /&gt;and change the Security Setting column to &lt;/span&gt;&lt;/span&gt;the proper setting for your domain.&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_sFpwqI3xpuQ/RtBbQOAIzdI/AAAAAAAAAF8/4MiC4ZpGzUU/s1600-h/LocalSecurityPolicy.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_sFpwqI3xpuQ/RtBbQOAIzdI/AAAAAAAAAF8/4MiC4ZpGzUU/s200/LocalSecurityPolicy.jpg" alt="" id="BLOGGER_PHOTO_ID_5102678712005479890" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;At this point, you should be able to login to a share on a computer in your domain.  If not, reboot and try it again.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 2:&lt;/span&gt;&lt;br /&gt;Give administrators the right to add a computer to a domain.&lt;br /&gt;&lt;br /&gt;O&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;n the Local Security Policy form, click on the &lt;/span&gt;&lt;/span&gt;User Rights Assignments &lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;tree node:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;Security Settings-&gt;&lt;/span&gt;&lt;/span&gt;Local Security Policy-&gt;User Rights Assignments&lt;br /&gt;&lt;br /&gt;In the policy column, look for  &lt;span style="font-weight: bold; font-style: italic;"&gt;Add workstations to a domain &lt;/span&gt;and change the S&lt;span&gt;&lt;/span&gt;ecurity Setting column to &lt;span style="font-weight: bold; font-style: italic;"&gt;Administrator&lt;/span&gt;&lt;br /&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_sFpwqI3xpuQ/RtBcXuAIzeI/AAAAAAAAAGE/1_1Yj7u2WvU/s1600-h/LocalSecurityPolicyMaybe.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_sFpwqI3xpuQ/RtBcXuAIzeI/AAAAAAAAAGE/1_1Yj7u2WvU/s200/LocalSecurityPolicyMaybe.jpg" alt="" id="BLOGGER_PHOTO_ID_5102679940366126562" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 3:&lt;/span&gt;&lt;br /&gt;Change the computer name to the desired name.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;How to get to the Computer Name/Domain changes dialog&lt;/span&gt;&lt;/span&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;:&lt;br /&gt;Start-&gt;&lt;/span&gt;&lt;/span&gt;Control Panel-&gt;System and Maintenance-&gt;System&lt;br /&gt;In the Computer name, domain and workgroup settings, left click "Change settings"&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_sFpwqI3xpuQ/RtBi8OAIzfI/AAAAAAAAAGM/dbJVEqxbS2Y/s1600-h/ComputerName.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_sFpwqI3xpuQ/RtBi8OAIzfI/AAAAAAAAAGM/dbJVEqxbS2Y/s200/ComputerName.jpg" alt="" id="BLOGGER_PHOTO_ID_5102687164501118450" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Step 4:&lt;/span&gt;&lt;br /&gt;Use Netdom.exe to add the computer to the domain.&lt;br /&gt;&lt;br /&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span&gt;netdom join ComputerName /domain:DomainName /userd:UserName /passwordd:UserPassword&lt;br /&gt;&lt;br /&gt;Notes:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Yes, there is a letter "d" after user and password in the netdom command.&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;I could not find the netdom.exe application on Vista.&lt;/span&gt;  I cheated and installed it on an XP machine and copied the netdom.exe to my Vista laptop.   On your XP installation disk, you must run the setup.exe under Support/Tools.  Afterwards, you will find it under c:\program files\Support Tools\Netdom.exe&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;References:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1699346&amp;SiteID=17"&gt;Longhorn newsgroup post&lt;/a&gt;&lt;a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1699346&amp;amp;SiteID=17" target="_blank" onclick="return top.js.OpenExtLink(window,event,this)"&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://forums.microsoft.com/TechNet/ShowPost.aspx?PostID=1298601&amp;amp;SiteID=17"&gt;&lt;span id="_ctl0_MainContent_PostFlatView"&gt;&lt;span id="_ctl0_MainContent_PostFlatView__ctl0_PostSubject" class="forumName"&gt;Error Adding Vista to a Domain&lt;/span&gt;&lt;/span&gt;&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/6023216877398324826-4541020417213374990?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/4541020417213374990/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=4541020417213374990' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/4541020417213374990'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/4541020417213374990'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2007/08/problems-adding-vista-machine-to-our.html' title='Problems adding a Vista machine to a domain'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_sFpwqI3xpuQ/RtBbQOAIzdI/AAAAAAAAAF8/4MiC4ZpGzUU/s72-c/LocalSecurityPolicy.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-8539083596050390363</id><published>2007-08-10T15:37:00.000-05:00</published><updated>2007-08-10T16:07:54.028-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='persistence'/><category scheme='http://www.blogger.com/atom/ns#' term='load balancer'/><category scheme='http://www.blogger.com/atom/ns#' term='sticky session'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>Load balancer persistence (sticky sessions)</title><content type='html'>I &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1990371&amp;amp;SiteID=1"&gt;posted&lt;/a&gt; a question to the WCF forum today:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Question:&lt;/strong&gt;&lt;br /&gt;If I have a load balancer in front of three servers (call them A, B, and C) and a client connects to a web service on server B using a WCF http binding that has a session (e.g., wsHttpBinding with sessions enabled), am I guaranteed that I will always communicate with server B until I close the client's proxy?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The Answer: &lt;/strong&gt;&lt;br /&gt;The answer to my question was "yes" if sticky sessions are enabled (Thanks to Pablo Cibraro MVP).&lt;br /&gt;&lt;br /&gt;&lt;p&gt;I discovered that a sticky session is one of several kinds of &lt;strong&gt;load balancer persistence&lt;/strong&gt; and that you will have to check your load balancer's manual to determine what it supports. For example, here is a list of persistent types supported by the F5 load balancer:&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Cookie persistence - uses an HTTP cookie stored on a client’s computer to allow the client to reconnect to the same server previously visited at a web site.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Destination address affinity persistence&lt;/strong&gt; - Also known as&lt;strong&gt; sticky persistence&lt;/strong&gt;, destination address affinity persistence supports TCP and UDP protocols, and directs session requests to the same server based solely on the destination IP address of a packet.&lt;/li&gt;&lt;li&gt;Hash persistence - Hash persistence allows you to create a persistence hash based on an existing iRule.&lt;/li&gt;&lt;li&gt;Microsoft Remote Desktop Protocol persistence - persistence tracks sessions between clients and servers running the Microsoft Remote Desktop Protocol (RDP) service.&lt;/li&gt;&lt;li&gt;SIP persistence - is a type of persistence used for servers that receive Session Initiation Protocol (SIP) messages sent through UDP. SIP is a protocol that enables real-time messaging, voice, data, and video.&lt;/li&gt;&lt;li&gt;Source address affinity persistence - Also known as simple persistence, source address affinity persistence supports TCP and UDP protocols, and directs session requests to the same server based solely on the source IP address of a packet.&lt;/li&gt;&lt;li&gt;SSL persistence - is a type of persistence that tracks non-terminated SSL sessions, using the SSL session ID. Even when the client’s IP address changes, the LTM system still recognizes the connection as being persistent based on the session ID. Note that the term non-terminated SSL sessions refers to sessions in which the LTM system does not perform the tasks of SSL certificate authentication and encryption/re-encryption.&lt;/li&gt;&lt;li&gt;Universal persistence - allows you to write an expression that defines what to persist on in a packet. The expression, written using the same TM expression syntax that you use in iRules, defines some sequence of bytes to use as a session identifier.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Other issues to keep in mind:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Load balancer session timeout value.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Resources: &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/drnick/archive/2007/07/13/sticky-sessions.aspx"&gt;How can I use reliable messaging together with a load balancer?&lt;/a&gt; (Thanks Christian Weyer Moderator MVP)&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/msdnmag/issues/05/02/WebQA/"&gt;ActiveX Privileges, Making Icon Files, Sticky Sessions, and More&lt;/a&gt; (3rd question down)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-8539083596050390363?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/8539083596050390363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=8539083596050390363' title='15 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/8539083596050390363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/8539083596050390363'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2007/08/load-balancer-persistence-sticky.html' title='Load balancer persistence (sticky sessions)'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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>15</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-1835875379555355804</id><published>2007-07-31T13:39:00.008-05:00</published><updated>2010-02-03T22:18:31.236-06:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CF'/><title type='text'>How do I connect a CF emulator to the Internet?</title><content type='html'>I'm not a CF guy, so this one cost me more time than I would like to admit. Fortunately, one of the guys I work with helped me out.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;1. Make sure &lt;span style="font-weight: bold;"&gt;Virtual Machine Network Services&lt;/span&gt; is installed. On the "Network Connections" dialog, right click the "Local Area Connection" icon and then left click properties. This will bring up the "Local Area Connections Properties" dialog (see the picture below). If &lt;span style="font-weight: bold;"&gt;Virtual Machine Network Services &lt;/span&gt;is not installed, you can install it by downloading and installing &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=04D26402-3199-48A3-AFA2-2DC0B40A73B6&amp;amp;displaylang=en"&gt;Virtual PC 2007 &lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;XP:&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_sFpwqI3xpuQ/Rq-CMFPGT3I/AAAAAAAAAE0/AQBCHpr_Sww/s1600-h/VirtualMachineNetworkServices.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5093432847654866802" src="http://bp3.blogger.com/_sFpwqI3xpuQ/Rq-CMFPGT3I/AAAAAAAAAE0/AQBCHpr_Sww/s200/VirtualMachineNetworkServices.jpg" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Vista:&lt;br /&gt;&lt;a href="http://bp3.blogger.com/_sFpwqI3xpuQ/RrEHNlPGT7I/AAAAAAAAAFU/NBrhFQi1w60/s1600-h/VirtualNetork2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5093860583447875506" src="http://bp3.blogger.com/_sFpwqI3xpuQ/RrEHNlPGT7I/AAAAAAAAAFU/NBrhFQi1w60/s200/VirtualNetork2.jpg" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Windows 7:&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div align="left" class="separator" style="border-bottom: medium none; border-left: medium none; border-right: medium none; border-top: medium none; clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_sFpwqI3xpuQ/S2n5r-8OC6I/AAAAAAAAARo/_DSK3CGjVUo/s1600-h/Windows7.jpg" imageanchor="1" style="clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="158" kt="true" src="http://1.bp.blogspot.com/_sFpwqI3xpuQ/S2n5r-8OC6I/AAAAAAAAARo/_DSK3CGjVUo/s200/Windows7.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;2. Open the emulator's "configuration" dialog (File-&amp;gt;Configure...).&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://bp2.blogger.com/_sFpwqI3xpuQ/Rq-CE1PGT2I/AAAAAAAAAEs/1nZrQbpjP5o/s1600-h/Configure1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5093432723100815202" src="http://bp2.blogger.com/_sFpwqI3xpuQ/Rq-CE1PGT2I/AAAAAAAAAEs/1nZrQbpjP5o/s200/Configure1.jpg" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;3. Check the "Enable NE2000 PCMCIA network adapter and bind to:" checkbox and then select your computer's network card from the drop down list. Afterwards, left click the "Ok" button.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://bp1.blogger.com/_sFpwqI3xpuQ/Rq-DNlPGT4I/AAAAAAAAAE8/b-cRrbaeoKY/s1600-h/Configure2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5093433972936298370" src="http://bp1.blogger.com/_sFpwqI3xpuQ/Rq-DNlPGT4I/AAAAAAAAAE8/b-cRrbaeoKY/s200/Configure2.jpg" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;4. Configure your &lt;span style="font-weight: bold;"&gt;network card&lt;/span&gt; so that it connects to the Internet. Open the "Settings" dialog (Start-&amp;gt;Settings), change to the "Connections" tab, and then double click the "Network Cards" icon. Next, select "The Internet" from the "Configure Network Adapters" dialog's drop down list. Finally, left click "Ok" in the upper right hand corner.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://bp0.blogger.com/_sFpwqI3xpuQ/Rq-DxVPGT5I/AAAAAAAAAFE/wVTl5nKlpWo/s1600-h/Network1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5093434587116621714" src="http://bp0.blogger.com/_sFpwqI3xpuQ/Rq-DxVPGT5I/AAAAAAAAAFE/wVTl5nKlpWo/s200/Network1.jpg" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;a href="http://bp1.blogger.com/_sFpwqI3xpuQ/Rq-EWlPGT6I/AAAAAAAAAFM/jRTTrwtT0sI/s1600-h/Network2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5093435227066748834" src="http://bp1.blogger.com/_sFpwqI3xpuQ/Rq-EWlPGT6I/AAAAAAAAAFM/jRTTrwtT0sI/s200/Network2.jpg" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;5. Configure your &lt;span style="font-weight: bold;"&gt;connection &lt;/span&gt;so that it will access the Internet directly. Double click the "Connections" icon on the "Settings" dialog. Next, left click the "Advanced" tab and left click the"Select Networks" button. On the "Network Management" dialog, you can either create a new location or just edit the work connection like I did below by left click the "Edit" button. Next, left click the "Proxy" tab and the check the "This network connects to the Internet" checkbox. Finally, left click "Ok" in the upper right hand corner three times to return to the "Settings" dialog.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;a href="http://bp2.blogger.com/_sFpwqI3xpuQ/RrKFTFPGT8I/AAAAAAAAAFc/bMgAUIYITyk/s1600-h/Connections1.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5094280691378966466" src="http://bp2.blogger.com/_sFpwqI3xpuQ/RrKFTFPGT8I/AAAAAAAAAFc/bMgAUIYITyk/s200/Connections1.jpg" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;a href="http://bp2.blogger.com/_sFpwqI3xpuQ/RrKFmFPGT9I/AAAAAAAAAFk/pQ8x4O3cnuY/s1600-h/Connections2.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5094281017796480978" src="http://bp2.blogger.com/_sFpwqI3xpuQ/RrKFmFPGT9I/AAAAAAAAAFk/pQ8x4O3cnuY/s200/Connections2.jpg" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;a href="http://bp0.blogger.com/_sFpwqI3xpuQ/RrKFulPGT-I/AAAAAAAAAFs/Yd5EMLiEB3Q/s1600-h/Connections3.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5094281163825369058" src="http://bp0.blogger.com/_sFpwqI3xpuQ/RrKFulPGT-I/AAAAAAAAAFs/Yd5EMLiEB3Q/s200/Connections3.jpg" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;a href="http://bp3.blogger.com/_sFpwqI3xpuQ/RrKF1VPGT_I/AAAAAAAAAF0/SeKY8ic3Eeg/s1600-h/Connections4.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"&gt;&lt;img alt="" border="0" id="BLOGGER_PHOTO_ID_5094281279789486066" src="http://bp3.blogger.com/_sFpwqI3xpuQ/RrKF1VPGT_I/AAAAAAAAAF0/SeKY8ic3Eeg/s200/Connections4.jpg" style="cursor: pointer;" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;6. Try using Internet Explorer to connect the Internet.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;Notes:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;I had problems getting this to work at home. I finally got it working by first configuring the "USA Windows Mobile 5.0 Pocket PC R2 Emulator" and then saving its state (File -&amp;gt; Save State and Exit). Afterwards, I ran the "USA Windows Mobile 5.0 PC R2 Square Emulator" and it connected to the Internet. I saved its state and returned to the first emulator and it was working. I have no idea why this worked and I hate not knowing!&lt;/li&gt;&lt;li&gt;During the process of figuring this out, I managed to wipe out Active Sync. I fixed it by downloading &lt;a href="http://www.microsoft.com/windowsmobile/activesync/activesync45.mspx"&gt;Active Sync 4.5&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;I also managed to kill the Device Manager by telling it not to load certain libraries. I fixed that by running the &lt;span style="font-weight: bold;"&gt;devenv /resetskippkgs&lt;/span&gt; command from the Visual Studio prompt.&lt;/li&gt;&lt;/ul&gt;Helpful links:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://nino.net/blog/wm5emulatorinternetconnectivitywithoutactivesync/"&gt;http://nino.net/blog/wm5emulatorinternetconnectivitywithoutactivesync/&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/akhune/archive/2005/11/16/493329.aspx"&gt;http://blogs.msdn.com/akhune/archive/2005/11/16/493329.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd721907.aspx"&gt;http://msdn.microsoft.com/en-us/library/dd721907.aspx&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.brianpeek.com/blog/archive/2009/05/02/windows-virtual-pc-and-the-microsoft-device-emulator.aspx"&gt;Windows 7: Windwos Virtual PC and Microsoft Device Emulator&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/6023216877398324826-1835875379555355804?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/1835875379555355804/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=1835875379555355804' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/1835875379555355804'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/1835875379555355804'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2007/07/how-do-i-connect-ce-emulator-to.html' title='How do I connect a CF emulator to the Internet?'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_sFpwqI3xpuQ/Rq-CMFPGT3I/AAAAAAAAAE0/AQBCHpr_Sww/s72-c/VirtualMachineNetworkServices.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-4160580671157727950</id><published>2007-07-13T20:54:00.000-05:00</published><updated>2007-07-16T20:21:16.253-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='How do I WCF'/><category scheme='http://www.blogger.com/atom/ns#' term='WCF'/><title type='text'>How do I upload &amp; download files using WCF?</title><content type='html'>I'm looking for the best way to accomplish these tasks.  What follows is the best information that I've found.  I will periodically update this post as I discover more information.&lt;br /&gt;&lt;br /&gt;Examples:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;There is a streaming example in the "&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0043041f-95d6-4eb7-966a-c21a737e193a&amp;displaylang=en"&gt;Windows Communication Foundation (WCF) and Windows CardSpace Samples&lt;/a&gt;" that can be found here:    [Extraction Directory]\ TechnologySamples\ Basic\ Contract\ Service\ Stream.  Help for this example can be found at the .NET Framework Developer Center here:  &lt;a href="http://msdn2.microsoft.com/en-us/library/ms751463.aspx"&gt;Example help&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There is a chunking  channel example  in the "&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0043041f-95d6-4eb7-966a-c21a737e193a&amp;amp;displaylang=en"&gt;Windows Communication Foundation (WCF) and Windows CardSpace Samples&lt;/a&gt;" that can be found here:  [Extraction Directory]\ TechnologySamples\ Extensibility\ Channels\ ChunkingChannel.  Help for this example can be found at the .NET Framework Developer Center here:  &lt;a href="http://msdn2.microsoft.com/en-us/library/aa717050.aspx"&gt;Example help&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;There is a streaming over https example in the "&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=0043041f-95d6-4eb7-966a-c21a737e193a&amp;displaylang=en"&gt;Windows Communication Foundation (WCF) and Windows CardSpace Samples&lt;/a&gt;" that can be found here: [Extraction Directory]\ C:\Temp\TechnologySamples\Extensibility\Binding\WSStreamedHttpBinding.  Help for this example can be found at the.NET Framework Developer Center here:  &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://msdn2.microsoft.com/en-us/library/ms751520.aspx"&gt;Example help&lt;/a&gt; &lt;span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;WCF gotchas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Don't forget to set the &lt;span style="font-weight: bold;"&gt;maxReceivedMessageSize&lt;/span&gt; attribute of your binding to something fairly high if you are sending large files.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;IIS gotchas:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Increase the &lt;span style="font-weight: bold;"&gt;maxRequestLength&lt;/span&gt;, which represents maximum length in kilobytes, in the System.Web section of my web.config file in order to upload large files to your server (i.e., &lt; maxrequestlength="65536"&gt; ).  Remember that the reason &lt;span style="font-weight: bold;"&gt;maxRequestLength&lt;/span&gt; in the System.Web section was set so low was to decrease your vulnerability to denial-of-service attacks.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;Articles worth reading:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Kjell-Sverre Jerijærvi: "&lt;a href="http://kjellsj.blogspot.com/2007/02/wcf-streaming-upload-files-over-http.html"&gt;WCF Streaming: Upload files over HTTP&lt;/a&gt;".&lt;/li&gt;&lt;li&gt;MSDN:  &lt;a href="http://msdn2.microsoft.com/en-us/library/ms751463.aspx"&gt;Service Contract: Stream&lt;/a&gt; &lt;/li&gt;&lt;li&gt;MSDN:  &lt;a href="http://msdn2.microsoft.com/en-us/library/ms789010.aspx"&gt;How to: Enable Streaming&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;MSDN:  &lt;a href="http://msdn2.microsoft.com/en-us/library/ms733742.aspx"&gt;Large Data and Streaming&lt;/a&gt;&lt;br /&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/6023216877398324826-4160580671157727950?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/4160580671157727950/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=4160580671157727950' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/4160580671157727950'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/4160580671157727950'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2007/07/how-do-i-upload-download-file-using-wcf.html' title='How do I upload &amp; download files using WCF?'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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-6023216877398324826.post-5899183539836421942</id><published>2007-07-12T21:39:00.001-05:00</published><updated>2007-07-13T21:41:30.148-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xsd'/><category scheme='http://www.blogger.com/atom/ns#' term='xml'/><category scheme='http://www.blogger.com/atom/ns#' term='How do I XML'/><title type='text'>How to generate an XSD file from an existing class</title><content type='html'>Since one of my co-workers ask me how to generate an XSD file from an existing class today, I decided to post an example of how to do it.&lt;br /&gt;&lt;br /&gt;First, I need a class to convert, so I will generate an XSD file from this class, which resides inside of an assembly called MyClassLibrary.dll:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;using System.Xml.Serialization;&lt;br /&gt;&lt;br /&gt;namespace MyNameSpace&lt;br /&gt;{&lt;br /&gt;[XmlRoot("Customer", Namespace ="http://www.yates.com/BusinessObjects/2007/07")]&lt;br /&gt;public class Customer&lt;br /&gt;{&lt;br /&gt;    private string _firstName;&lt;br /&gt;    private string _middleName;&lt;br /&gt;    private string _lastName;&lt;br /&gt;&lt;br /&gt;public string LastName&lt;br /&gt;{&lt;br /&gt;  get { return _lastName; }&lt;br /&gt;  set { _lastName = value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public string FirstName&lt;br /&gt;{&lt;br /&gt;  get { return _firstName; }&lt;br /&gt;  set { _firstName = value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public string MiddleName&lt;br /&gt;{&lt;br /&gt;  get { return _middleName; }&lt;br /&gt;  set { _middleName = value; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;[XmlIgnore]&lt;br /&gt;public string Name&lt;br /&gt;{&lt;br /&gt;  get&lt;br /&gt;  {&lt;br /&gt;     if (string.IsNullOrEmpty(MiddleName) == false)&lt;br /&gt;       return string.Format("{0} {1} {2}", FirstName, MiddleName, LastName);&lt;br /&gt;    else return string.Format("{0} {1}", FirstName, LastName);&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;Next, a command prompt window is opened in the same directory as MyClassLibrary.dll.&lt;br /&gt;&lt;br /&gt;Afterwards, the following command is used to generate the XSD:&lt;br /&gt;"C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\xsd.exe" MyClassLibrary.dll /t:Customer&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_sFpwqI3xpuQ/Rpbp58nbESI/AAAAAAAAAEU/idWhD6BK69E/s1600-h/DosWindow.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5086510010894848290" style="cursor: pointer;" alt="" src="http://bp2.blogger.com/_sFpwqI3xpuQ/Rpbp58nbESI/AAAAAAAAAEU/idWhD6BK69E/s200/DosWindow.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Finally, an XSD file called schema0.xsd is generated in the same directory as the assembly. It looks like this:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_sFpwqI3xpuQ/RpbwMMnbEUI/AAAAAAAAAEk/imyF8m5Ew0w/s1600-h/XSDOutput.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5086516921497227586" style="cursor: pointer;" alt="" src="http://bp3.blogger.com/_sFpwqI3xpuQ/RpbwMMnbEUI/AAAAAAAAAEk/imyF8m5Ew0w/s200/XSDOutput.jpg" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-5899183539836421942?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/5899183539836421942/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=5899183539836421942' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/5899183539836421942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/5899183539836421942'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2007/07/how-to-generate-xsd-file-from-existing.html' title='How to generate an XSD file from an existing class'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_sFpwqI3xpuQ/Rpbp58nbESI/AAAAAAAAAEU/idWhD6BK69E/s72-c/DosWindow.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-4309619450359450557</id><published>2007-07-02T11:10:00.000-05:00</published><updated>2007-07-19T16:42:26.719-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><category scheme='http://www.blogger.com/atom/ns#' term='Orcas'/><title type='text'>Unable to add a WCF service template to a converted project</title><content type='html'>I filed a &lt;a href="http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=285294"&gt;bug&lt;/a&gt; at &lt;a href="http://connect.microsoft.com/VisualStudio/Feedback"&gt;Microsoft's feedback web site&lt;/a&gt; on Friday because I was unable to add a WCF service template to a converted project in Visual Orcas March 2007 CTP.&lt;br /&gt;&lt;br /&gt;It turns out that it wasn't really a bug.    I was ignorant of the fact that you need to change the target framework from whatever it was originally set to (in my case ".NET Framework 2.0")  to ".NET Framework 3.0" or ".NET Framework 3.5".&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_sFpwqI3xpuQ/RoklusmO_OI/AAAAAAAAAEM/pcacbyzvFKo/s1600-h/TargetFramework.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_sFpwqI3xpuQ/RoklusmO_OI/AAAAAAAAAEM/pcacbyzvFKo/s200/TargetFramework.jpg" alt="" id="BLOGGER_PHOTO_ID_5082635138640051426" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-4309619450359450557?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/4309619450359450557/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=4309619450359450557' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/4309619450359450557'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/4309619450359450557'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2007/07/unable-to-add-wcf-service-template-to.html' title='Unable to add a WCF service template to a converted project'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_sFpwqI3xpuQ/RoklusmO_OI/AAAAAAAAAEM/pcacbyzvFKo/s72-c/TargetFramework.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-4483179049917965766</id><published>2007-06-28T11:19:00.000-05:00</published><updated>2007-07-13T21:49:01.824-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='problems'/><title type='text'>Application configuration is incorrect - Redistributable Package issue</title><content type='html'>Well, I managed to break the build indirectly today.  The build compiled fine, but when we ran any of our C++ applications, we got this error dialog:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_sFpwqI3xpuQ/RoPgucmO_MI/AAAAAAAAAD4/q_phajO91OA/s1600-h/error+message.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp0.blogger.com/_sFpwqI3xpuQ/RoPgucmO_MI/AAAAAAAAAD4/q_phajO91OA/s200/error+message.jpg" alt="" id="BLOGGER_PHOTO_ID_5081151893159214274" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Error message:&lt;br /&gt;This application has failed to start because the application configuration is incorrect.  Reinstalling the application may fix this problem.&lt;br /&gt;&lt;br /&gt;The problem:&lt;br /&gt;I broke the build by applying &lt;span style="font-weight: bold;"&gt;Visual Studio service pack 1&lt;/span&gt; to the build machine.  As you can see above, the error message we received was clear as mud.  With a little bit of hunting, I discovered that changes were made to the C++ redistributable, which show up in the manifest file.  As you can see here, the version number in the application intermediate manifest file is 8.0.50727.762  (it was 8.0.50608.0 prior to applying the service pack):&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_sFpwqI3xpuQ/RoPmZ8mO_NI/AAAAAAAAAEA/hnM0ozbHlaw/s1600-h/manifest.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_sFpwqI3xpuQ/RoPmZ8mO_NI/AAAAAAAAAEA/hnM0ozbHlaw/s200/manifest.jpg" alt="" id="BLOGGER_PHOTO_ID_5081158138041662674" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The fix:&lt;br /&gt;Applying the new redistributable to the target machine fixed our problem.  You can download the Microsoft Visual C++ 2005 SP1 Redistributable Package (x86) Version 8.0.50727.762 &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=200B2FD9-AE1A-4A14-984D-389C36F85647&amp;amp;displaylang=en"&gt;here&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Reference:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/nikolad/archive/2007/04/23/vs2005-sp1-version-of-visual-c-redistributable-package-is-available-for-download.aspx"&gt;VS2005 SP1 version of Visual C++ Redistributable Package is available for download&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/nikolad/archive/2007/03/29/a-solution-to-two-references-to-different-versions-of-crt-mfc-atl-in-one-application-manifest-file.aspx"&gt;A solution to two references to different versions of CRT, MFC, ATL in one application manifest file&lt;/a&gt;&lt;br /&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/6023216877398324826-4483179049917965766?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/4483179049917965766/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=4483179049917965766' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/4483179049917965766'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/4483179049917965766'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2007/06/application-configuratin-is-incorrect.html' title='Application configuration is incorrect - Redistributable Package issue'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp0.blogger.com/_sFpwqI3xpuQ/RoPgucmO_MI/AAAAAAAAAD4/q_phajO91OA/s72-c/error+message.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-8766686153694105774</id><published>2007-06-26T16:33:00.000-05:00</published><updated>2007-07-13T21:51:25.384-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><title type='text'>Changing SQL Server 2005 authentication mode</title><content type='html'>I had to hunt around today to figure out how to change SQL Server 2005 authentication mode , so I figured I would document it here in case it slips my mind again.&lt;br /&gt;&lt;br /&gt;1.  Launch SQL Server Management Studio Express ( Start &gt; Programs &gt; Microsoft SQL Server 2005 &gt; SQL Server Management Studio)&lt;br /&gt;&lt;br /&gt;2. Right-click the Server name, select Properties &gt; Security (see picture below)&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_sFpwqI3xpuQ/RoGIo_doKDI/AAAAAAAAADw/oGtbXvpuaC8/s1600-h/ManagementStudioExpress.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_sFpwqI3xpuQ/RoGIo_doKDI/AAAAAAAAADw/oGtbXvpuaC8/s200/ManagementStudioExpress.jpg" alt="" id="BLOGGER_PHOTO_ID_5080492092462475314" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Under Server Authentication, select SQL Server and Windows Authentication Mode&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_sFpwqI3xpuQ/RoGHFPdoKCI/AAAAAAAAADo/Da_6s7xHYbo/s1600-h/ServerProperties.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_sFpwqI3xpuQ/RoGHFPdoKCI/AAAAAAAAADo/Da_6s7xHYbo/s200/ServerProperties.jpg" alt="" id="BLOGGER_PHOTO_ID_5080490378770524194" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4.  Stopped and re-started the SQL Server&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-8766686153694105774?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/8766686153694105774/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=8766686153694105774' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/8766686153694105774'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/8766686153694105774'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2007/06/changing-sql-server-2005-authentication.html' title='Changing SQL Server 2005 authentication mode'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_sFpwqI3xpuQ/RoGIo_doKDI/AAAAAAAAADw/oGtbXvpuaC8/s72-c/ManagementStudioExpress.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-6023216877398324826.post-5155685454130695752</id><published>2007-06-08T10:31:00.001-05:00</published><updated>2007-06-29T10:04:25.987-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><category scheme='http://www.blogger.com/atom/ns#' term='certificates'/><title type='text'>Installing Cygwin with the OpenSSL package</title><content type='html'>Installing Cygwin with the OpenSSL package is fairly easy once you understand how to do it. The folks at Cygwin did a good job of building a custom installer; however, I blew right passed the option for installing the openssl package because it is not Microsoft looking. Here are the instructions for installing Cygwin with the OpenSSL package so that you don't make the same mistake that I did:&lt;br /&gt;&lt;br /&gt;1. Download the Cygwin installer from their web site here: www.cygwin.com&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_sFpwqI3xpuQ/Rml49PdoKAI/AAAAAAAAADY/q00IAjYvCQI/s1600-h/CygwinWebSite.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_sFpwqI3xpuQ/Rml49PdoKAI/AAAAAAAAADY/q00IAjYvCQI/s200/CygwinWebSite.jpg" alt="" id="BLOGGER_PHOTO_ID_5073719448727726082" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I've circled the link in the picture above.&lt;br /&gt;&lt;br /&gt;2. Run the setup.exe (see below) that you downloaded and press the next button.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_sFpwqI3xpuQ/Rml29_doJ2I/AAAAAAAAACI/LnzumARlfM4/s1600-h/CygwinInstallPicture1.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_sFpwqI3xpuQ/Rml29_doJ2I/AAAAAAAAACI/LnzumARlfM4/s200/CygwinInstallPicture1.jpg" alt="" id="BLOGGER_PHOTO_ID_5073717262589372258" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Select "Install from Internet" and press the next button&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_sFpwqI3xpuQ/Rml3dvdoJ3I/AAAAAAAAACQ/LnzRDP0EIg0/s1600-h/CygwinInstallPicture2.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_sFpwqI3xpuQ/Rml3dvdoJ3I/AAAAAAAAACQ/LnzRDP0EIg0/s200/CygwinInstallPicture2.jpg" alt="" id="BLOGGER_PHOTO_ID_5073717808050218866" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;4. Pick an installation location, select how you want cygwin to be used and then press the next button.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_sFpwqI3xpuQ/Rml3m_doJ4I/AAAAAAAAACY/UqgYMnpLBJk/s1600-h/CygwinInstallPicture3.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_sFpwqI3xpuQ/Rml3m_doJ4I/AAAAAAAAACY/UqgYMnpLBJk/s200/CygwinInstallPicture3.jpg" alt="" id="BLOGGER_PHOTO_ID_5073717966964008834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5. Pick a location where the setup.exe can downloaded files and press the next button.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_sFpwqI3xpuQ/Rml3w_doJ5I/AAAAAAAAACg/yjLy27IzixU/s1600-h/CygwinInstallPicture4.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_sFpwqI3xpuQ/Rml3w_doJ5I/AAAAAAAAACg/yjLy27IzixU/s200/CygwinInstallPicture4.jpg" alt="" id="BLOGGER_PHOTO_ID_5073718138762700690" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. Tell the Setup.exe how it should connect to the Internet and then press the next button.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_sFpwqI3xpuQ/Rml4NPdoJ6I/AAAAAAAAACo/0y-6mLsDhHY/s1600-h/CygwinInstallPicture5.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_sFpwqI3xpuQ/Rml4NPdoJ6I/AAAAAAAAACo/0y-6mLsDhHY/s200/CygwinInstallPicture5.jpg" alt="" id="BLOGGER_PHOTO_ID_5073718624094005154" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;7. Setup.exe will retrieve a list of sites that have the files that need to be downloaded.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_sFpwqI3xpuQ/Rml4S_doJ7I/AAAAAAAAACw/70tU1P1s2k0/s1600-h/CygwinInstallPicture6.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_sFpwqI3xpuQ/Rml4S_doJ7I/AAAAAAAAACw/70tU1P1s2k0/s200/CygwinInstallPicture6.jpg" alt="" id="BLOGGER_PHOTO_ID_5073718722878252978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;8. Pick a site to download the cygwin files from and press the next button:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_sFpwqI3xpuQ/Rml4X_doJ8I/AAAAAAAAAC4/Fn2n7BnQF7g/s1600-h/CygwinInstallPicture7.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_sFpwqI3xpuQ/Rml4X_doJ8I/AAAAAAAAAC4/Fn2n7BnQF7g/s200/CygwinInstallPicture7.jpg" alt="" id="BLOGGER_PHOTO_ID_5073718808777598914" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;9. The setup.exe will download the list of packages that you can choice from:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_sFpwqI3xpuQ/Rml4dPdoJ9I/AAAAAAAAADA/2OX8KYLezMw/s1600-h/CygwinInstallPicture8.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp3.blogger.com/_sFpwqI3xpuQ/Rml4dPdoJ9I/AAAAAAAAADA/2OX8KYLezMw/s200/CygwinInstallPicture8.jpg" alt="" id="BLOGGER_PHOTO_ID_5073718898971912146" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;10. Expand the Libs section of the tree, find the OpenSSL package, and left click the arrow in the new column till the text changes from "skip" to a version number:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_sFpwqI3xpuQ/Rml4jvdoJ-I/AAAAAAAAADI/GZ4W_3Ux7Lo/s1600-h/CygwinInstallPicture9.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp1.blogger.com/_sFpwqI3xpuQ/Rml4jvdoJ-I/AAAAAAAAADI/GZ4W_3Ux7Lo/s200/CygwinInstallPicture9.jpg" alt="" id="BLOGGER_PHOTO_ID_5073719010641061858" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I did NOT find this portion of the interface intuitive. I just thought that it wasn't available. I guess the only thing I'm use to changing in a tree view is a check box. Oh well, don't make this mistake.&lt;br /&gt;&lt;br /&gt;11. Download the files&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_sFpwqI3xpuQ/Rml4n_doJ_I/AAAAAAAAADQ/hYGVE6m7l9A/s1600-h/CygwinInstallPicture10.jpg"&gt;&lt;img style="cursor: pointer;" src="http://bp2.blogger.com/_sFpwqI3xpuQ/Rml4n_doJ_I/AAAAAAAAADQ/hYGVE6m7l9A/s200/CygwinInstallPicture10.jpg" alt="" id="BLOGGER_PHOTO_ID_5073719083655505906" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt; 12. Decide if you want to create a desktop icon or add a start menu icon and press the next button.  &lt;/p&gt;  &lt;p&gt; 13. Delete the Setup.exe and the files that it created in the download directory you specified in step 5.  &lt;/p&gt;  &lt;p&gt; 14. Your done. &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6023216877398324826-5155685454130695752?l=daveonsoftware.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://daveonsoftware.blogspot.com/feeds/5155685454130695752/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=6023216877398324826&amp;postID=5155685454130695752' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/5155685454130695752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6023216877398324826/posts/default/5155685454130695752'/><link rel='alternate' type='text/html' href='http://daveonsoftware.blogspot.com/2007/06/installing-cygwin-with-openssl-package.html' title='Installing Cygwin with the OpenSSL package'/><author><name>Dave</name><uri>http://www.blogger.com/profile/02617370042183361875</uri><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><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_sFpwqI3xpuQ/Rml49PdoKAI/AAAAAAAAADY/q00IAjYvCQI/s72-c/CygwinWebSite.jpg' height='72' width='72'/><thr:total>6</thr:total></entry></feed>
