<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/atom10full.xsl" type="text/xsl" media="screen"?><?xml-stylesheet href="http://feeds.feedburner.com/~d/styles/itemcontent.css" type="text/css" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0"><id>tag:blogger.com,1999:blog-6894552</id><updated>2008-12-01T08:25:20.988-08:00</updated><title type="text">JMPInline</title><subtitle type="html">Read up on .NET news, tips, cautions... and other areas of technological interest.</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://blog.nerdbank.net/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>110</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><geo:lat>47.71828</geo:lat><geo:long>-122.197026</geo:long><link rel="self" href="http://feeds.feedburner.com/Jmpinline" type="application/atom+xml" /><feedburner:browserFriendly>This is an XML content feed. It is intended to be viewed in a newsreader or syndicated to another site, subject to copyright and fair use.</feedburner:browserFriendly><entry><id>tag:blogger.com,1999:blog-6894552.post-149437800957451233</id><published>2008-11-02T07:31:00.001-08:00</published><updated>2008-11-02T07:31:36.136-08:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-11-02T07:31:36.136-08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">OpenID on Classic ASP</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/149437800957451233/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=149437800957451233" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/149437800957451233?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/149437800957451233?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/440045351/openid-on-classic-asp.html" title="OpenID on Classic ASP" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">Several people have asked for an OpenID library for Classic ASP.  Yes, it's several years deprecated, but there are still some major and smaller sites using it.  Classic ASP allows the consumption of COM/ActiveX objects, so it turns out DotNetOpenId can be used by Classic ASP!  But DotNetOpenId isn't a COM server.  Not in its released form anyway.  But there is now a CTP of DotNetOpenId that does&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=l7rgn"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=l7rgn" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=bhmeN"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=bhmeN" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=yUd8n"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=yUd8n" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=qOQ7n"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=qOQ7n" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=p8MoN"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=p8MoN" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/440045351" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/11/openid-on-classic-asp.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-9014743084153855149</id><published>2008-10-21T12:24:00.001-07:00</published><updated>2008-10-21T12:24:05.642-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-10-21T12:24:05.642-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><category scheme="http://www.blogger.com/atom/ns#" term="WCF" /><title type="text">DotNetOAuth source code to be released eminently</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/9014743084153855149/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=9014743084153855149" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/9014743084153855149?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/9014743084153855149?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/427796720/dotnetoauth-source-code-to-be-released.html" title="DotNetOAuth source code to be released eminently" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">Microsoft attorneys have signed off on the open source release of the DotNetOAuth source code that I've been building in my spare time.  It should show up in the public git repo in the next 24 hours.  What's up there right now is several weeks old and tons of progress has been made that I'm eager to publish.  Once it's published I'd very much like to get some feedback on the public API, and any &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=Tnaqm"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=Tnaqm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=ULeUM"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=ULeUM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=fxi1m"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=fxi1m" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=sBBYm"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=sBBYm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=JXNzM"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=JXNzM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/427796720" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/10/dotnetoauth-source-code-to-be-released.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-7084872000395527805</id><published>2008-10-18T23:58:00.001-07:00</published><updated>2008-10-18T23:58:04.955-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-10-18T23:58:04.955-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">Your security is inversely proportional to the number of OpenID Providers you use</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/7084872000395527805/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=7084872000395527805" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/7084872000395527805?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/7084872000395527805?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/425248751/your-security-is-inversely-proportional.html" title="Your security is inversely proportional to the number of OpenID Providers you use" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">Just a quick note if you're familiar with OpenID's XRDS documents and how they allow you to have one 'omni-Identifier' that lists all your other OpenID providers and identifiers so that you can use this one Identifier to log in anywhere with any OP and yet maintain just a single identity.  Although there's great convenience in tying your several Identifiers into a single Identifier using an XRDS &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=KPD6m"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=KPD6m" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=BMUQM"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=BMUQM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=BR42m"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=BR42m" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=wrIZm"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=wrIZm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=BdMLM"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=BdMLM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/425248751" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/10/your-security-is-inversely-proportional.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-7708080456751012918</id><published>2008-10-14T23:50:00.001-07:00</published><updated>2008-10-14T23:50:36.687-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-10-14T23:50:36.687-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">Enable international characters in OpenID domain names</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/7708080456751012918/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=7708080456751012918" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/7708080456751012918?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/7708080456751012918?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/421286849/enable-international-characters-in.html" title="Enable international characters in OpenID domain names" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">If you're using DotNetOpenId, you should consider enabling .NET to use IDN, or the International Domain Name scheme to enable users with international characters in the host name of their OpenID to log into your site.  Enabling IDN support requires .NET 3.5.    First, add this to your web.config or machine.config file's &lt;configuration&amp;gt;&lt;configSections&amp;gt; area.  &lt;section name="uri" type="&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=EPLzm"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=EPLzm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=0bywM"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=0bywM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=oaIOm"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=oaIOm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=2ZLIm"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=2ZLIm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=vlSCM"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=vlSCM" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/421286849" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/10/enable-international-characters-in.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-5737582779110009132</id><published>2008-10-06T10:03:00.001-07:00</published><updated>2008-10-06T10:03:34.620-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-10-06T10:03:34.620-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">Why OAuth can't be ignored</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/5737582779110009132/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=5737582779110009132" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5737582779110009132?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/5737582779110009132?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/412986138/why-oauth-can-be-ignored.html" title="Why OAuth can&amp;#39;t be ignored" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">Do you realize that your email password is probably your most sensitive piece of information?  You should never, ever give it away.  Not to another "trustworthy" web site, and not to a desktop app that wants to perform some service for you.  Web-based email these days is hosted by providers that offer many other services using the same user account.  For instance, if you use a desktop app to &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=dko1m"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=dko1m" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=kIoBM"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=kIoBM" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=gsrbm"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=gsrbm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=uxLJm"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=uxLJm" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=vHC8M"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=vHC8M" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/412986138" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/10/why-oauth-can-be-ignored.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-1318863246559934770</id><published>2008-09-26T07:47:00.001-07:00</published><updated>2008-09-26T07:47:50.519-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-09-26T07:47:50.519-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OAuth" /><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">What's coming for DotNetOpenId and DotNetOAuth</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/1318863246559934770/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=1318863246559934770" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1318863246559934770?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1318863246559934770?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/403864799/what-coming-for-dotnetopenid-and.html" title="What&amp;#39;s coming for DotNetOpenId and DotNetOAuth" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">Did you even know DotNetOAuth existed?  It's alpha quality right now but that will change soon.  OAuth and OpenID serve two orthogonal needs, and although Google is trying to combine the two, I haven't figured out how they are going to do it yet.  In the meantime I have been writing the DotNetOAuth library for you .NET programmers out there.  It's coming along nicely.  When I joined the &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=vGrxl"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=vGrxl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=m9ttL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=m9ttL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=HAlml"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=HAlml" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=AtYul"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=AtYul" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=kacOL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=kacOL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/403864799" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/09/what-coming-for-dotnetopenid-and.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-1757944827554203988</id><published>2008-09-19T21:01:00.001-07:00</published><updated>2008-09-19T21:01:18.936-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-09-19T21:01:18.936-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title type="text">NoTrailingWhitespace StyleCop rule, and others</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/1757944827554203988/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=1757944827554203988" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1757944827554203988?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1757944827554203988?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/397832985/notrailingwhitespace-stylecop-rule-and.html" title="NoTrailingWhitespace StyleCop rule, and others" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">After a period of initial bad taste, I've come to like StyleCop.  I dislike a few of their rules, and I turn those off.  But overall I like how it helps many developers maintain a consistent coding style within a project.  I wrote a few rules of my own, and offer them here for free.  Source code here: NerdBank StyleCop Rules  And here are the rules that are currently in the library, with more &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=abaVl"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=abaVl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=lzQML"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=lzQML" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=yadel"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=yadel" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=zTCtl"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=zTCtl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=AiT0L"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=AiT0L" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/397832985" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/09/notrailingwhitespace-stylecop-rule-and.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-3442137076785001350</id><published>2008-09-15T08:15:00.001-07:00</published><updated>2008-09-15T08:15:50.550-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-09-15T08:15:50.550-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">A rebuttal to the concerns surrounding OpenID</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/3442137076785001350/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=3442137076785001350" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/3442137076785001350?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/3442137076785001350?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/393308135/rebuttal-to-concerns-surrounding-openid.html" title="A rebuttal to the concerns surrounding OpenID" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">  OpenID is still largely unknown to most Internet users.  Those who already know something about it are mostly very tech savvy and have a strong opinion either for or against it.  Those for it see it as a realistic vision for single sign-on for the web.  Those who are against it range from simply not seeing a need for it to adamantly thinking it's one of the worst protocols because of the &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=8HBml"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=8HBml" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=4lWOL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=4lWOL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=hQndl"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=hQndl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=RVdpl"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=RVdpl" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=kCFuL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=kCFuL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/393308135" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/09/rebuttal-to-concerns-surrounding-openid.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-1923903381275404236</id><published>2008-09-09T04:01:00.001-07:00</published><updated>2008-09-09T04:01:09.818-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-09-09T04:01:09.818-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">My OpenID Provider wishlist</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/1923903381275404236/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=1923903381275404236" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1923903381275404236?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1923903381275404236?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/387563814/my-openid-provider-wishlist.html" title="My OpenID Provider wishlist" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">I have yet to find an OpenID Provider that offers all that OpenID has to offer.  Though some come awfully close, myopenid.com most notably.       Multiple personas          Attribute Exchange support (using the correct type URIs), including both ordinary persona information and allowing RPs to push attributes up.       Simple registration support        Unsolicited assertions to any RP I name&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=vLMll"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=vLMll" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=r4SuL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=r4SuL" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=Bwyql"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=Bwyql" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=n9Bil"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=n9Bil" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=IhYYL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=IhYYL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/387563814" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/09/my-openid-provider-wishlist.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-1157766733270276630</id><published>2008-08-18T14:20:00.004-07:00</published><updated>2008-08-19T15:06:22.898-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-08-19T15:06:22.898-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">DotNetOpenId adds an OpenID AJAX login control</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/1157766733270276630/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=1157766733270276630" title="10 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1157766733270276630?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1157766733270276630?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/369403196/dotnetopenid-adds-openid-ajax-login.html" title="DotNetOpenId adds an OpenID AJAX login control" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">10</thr:total><content type="html">DotNetOpenId may be feature complete per the OpenID spec, but it's far from stagnant. The next version will be packed with new enhanced security features that can be optionally turned on by relying party sites with high security requirements, and a new AJAX login control! I'm pleased to announce as well that it will be just as easy to drop in and use as the non-AJAX version.  Ah, the joys and &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=oQkBgk"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=oQkBgk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=dCrS5K"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=dCrS5K" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=ttOEbk"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=ttOEbk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=U9Xr0k"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=U9Xr0k" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=7I9WL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=7I9WL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/369403196" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/08/dotnetopenid-adds-openid-ajax-login.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-2651211700656126434</id><published>2008-08-09T13:58:00.001-07:00</published><updated>2008-08-09T13:58:36.009-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-08-09T13:58:36.009-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title type="text">Make your ASP.NET custom controls work with the validation controls</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/2651211700656126434/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=2651211700656126434" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2651211700656126434?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2651211700656126434?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/360587647/make-your-aspnet-custom-controls-work.html" title="Make your ASP.NET custom controls work with the validation controls" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">Do you have a custom ASP.NET control that you want to allow your users to attach the standard ASP.NET validation controls to?  A quick web search turns up a lot of forum topics that seem to suggest it's not possible.  But it is!  And it's so easy.  Just add a ValidationPropertyAttribute to your custom control's type declaration:  [ValidationProperty("Text")]
public class YourCustomControl : &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=tlDMkk"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=tlDMkk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=GqeozK"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=GqeozK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=vLHsPk"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=vLHsPk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=FQSh0k"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=FQSh0k" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=Bog8L"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=Bog8L" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/360587647" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/08/make-your-aspnet-custom-controls-work.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-6460508318809067442</id><published>2008-08-02T13:03:00.001-07:00</published><updated>2008-08-06T12:06:03.269-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-08-06T12:06:03.269-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title type="text">How to use a library without taking a hard dependency on it</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/6460508318809067442/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=6460508318809067442" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6460508318809067442?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6460508318809067442?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/353817506/how-to-use-library-without-taking-hard.html" title="How to use a library without taking a hard dependency on it" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">First let me lay out the problem: you're writing a library that so far is self-contained as a single DLL.  You want to add some functionality to your library that is available in another library that your users may or may not have or wish to deploy with your library.  You can either add a reference to that library and code against it in your library and require that your users deploy both &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=5quZYk"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=5quZYk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=w9C2TK"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=w9C2TK" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=7hXDvk"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=7hXDvk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=EcXXvk"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=EcXXvk" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=aAeVL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=aAeVL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/353817506" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/08/how-to-use-library-without-taking-hard.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-6116586521885724294</id><published>2008-07-30T23:23:00.001-07:00</published><updated>2008-07-30T23:29:55.411-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-07-30T23:29:55.411-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title type="text">How to cleanly log messages without wasting cycles when not logging</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/6116586521885724294/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=6116586521885724294" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6116586521885724294?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6116586521885724294?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/351251393/how-to-cleanly-log-messages-without.html" title="How to cleanly log messages without wasting cycles when not logging" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">Whether you use System.Diagnostics.Trace, log4net, or any other logger, it's often the case that you want to allow the logging to be turned on or off at runtime. To avoid your logging to slow down your app unnecessarily when the log messages are not being collected, it's common to use conditionals to only execute the logging paths if someone is listening. This leads to logging logic that clutters&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=RUIsTj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=RUIsTj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=ZFTycJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=ZFTycJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=oQKH8j"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=oQKH8j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=ebwwij"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=ebwwij" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=2iw2L"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=2iw2L" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/351251393" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/07/how-to-cleanly-log-messages-without.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-2610880835565772082</id><published>2008-07-22T23:23:00.001-07:00</published><updated>2008-07-23T07:12:32.041-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-07-23T07:12:32.041-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">How I have taken control of my own identity, part 2</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/2610880835565772082/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=2610880835565772082" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2610880835565772082?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2610880835565772082?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/343281597/how-i-have-taken-control-of-my-own_22.html" title="How I have taken control of my own identity, part 2" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">In my last post, I discussed how I made http://blog.nerdbank.net my one OpenID URL that allows me to link my several accounts with various OpenID Providers into a single URL that I may use anywhere.  In this post, I'll talk about some of the problems that remain with the system, and how XRI i-names can solve them.  Why use an XRI/i-name?  I purchased =Arnott from 1id.com, one of the many XRI &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=9M1Y1j"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=9M1Y1j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=ZSxyHJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=ZSxyHJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=EoGfmj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=EoGfmj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=gsfjCj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=gsfjCj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=sc0eL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=sc0eL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/343281597" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/07/how-i-have-taken-control-of-my-own_22.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-8948050388017137781</id><published>2008-07-18T13:33:00.001-07:00</published><updated>2008-07-18T13:34:51.420-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-07-18T13:34:51.420-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">How I have taken control of my own identity, part 1</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/8948050388017137781/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=8948050388017137781" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8948050388017137781?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8948050388017137781?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/339325970/how-i-have-taken-control-of-my-own.html" title="How I have taken control of my own identity, part 1" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">First I obtained an OpenID account with www.myopenid.com.  I actually have several other accounts with other OpenID Providers, such as pip.verisignlabs.com and yahoo.com because some relying parties allow only white-listed Providers, and some services offer me an OpenID whether I use it or not.    But to avoid an identity crisis of appearing all over the web as http://andrew.arnott.myopenid.com, &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=of7q4j"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=of7q4j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=ykgpfJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=ykgpfJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=Nwk2lj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=Nwk2lj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=IaGSmj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=IaGSmj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=yhvtL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=yhvtL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/339325970" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/07/how-i-have-taken-control-of-my-own.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-1194984396391151513</id><published>2008-07-14T12:48:00.001-07:00</published><updated>2008-07-14T12:48:15.276-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-07-14T12:48:15.276-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">DotNetOpenId gets a new face</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/1194984396391151513/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=1194984396391151513" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1194984396391151513?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/1194984396391151513?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/335393096/dotnetopenid-gets-new-face.html" title="DotNetOpenId gets a new face" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">Javier Román has completed his work on the new DotNetOpenId logo.  I think he has done excellent work, and he did it for free in the spirit of contributing to this open source project.  This logo is now on the project home page, and will soon be added to the samples.      A big thank you to Javier!  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=d2dm4j"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=d2dm4j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=JuwJBJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=JuwJBJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=F656ej"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=F656ej" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=xztZZj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=xztZZj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=DFdgL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=DFdgL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/335393096" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/07/dotnetopenid-gets-new-face.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-6750029193958599109</id><published>2008-07-09T16:27:00.001-07:00</published><updated>2008-07-09T16:27:07.386-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-07-09T16:27:07.386-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">How to make your OpenID Provider case insensitive</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/6750029193958599109/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=6750029193958599109" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6750029193958599109?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/6750029193958599109?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/331232036/how-to-make-your-openid-provider-case.html" title="How to make your OpenID Provider case insensitive" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">In my last post, I discussed why case sensitive OpenID URLs are so important for security.  But case sensitive OpenID URLs are no fun at all for users.  For instance, most users probably expect they could alternate between logging in as www.myprovider.com/myopenidurl and www.myprovider.com/MYOPENIDURL at an RP and be considered the same person.  But if OpenID URLs must be case sensitive, how can &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=9jM1Vj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=9jM1Vj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=JobC6J"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=JobC6J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=EqMLAj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=EqMLAj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=JbWjuj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=JbWjuj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=PuCNL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=PuCNL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/331232036" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/07/how-to-make-your-openid-provider-case.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-954364099098282285</id><published>2008-07-08T23:02:00.001-07:00</published><updated>2008-07-08T23:04:50.034-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-07-08T23:04:50.034-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">The case for case sensitive OpenID URL checking</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/954364099098282285/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=954364099098282285" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/954364099098282285?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/954364099098282285?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/330512977/case-for-case-sensitive-openid-url.html" title="The case for case sensitive OpenID URL checking" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><content type="html">URLs on the Internet are case sensitive by definition.  Some web servers choose to be case insensitive.  To treat OpenID urls as anything but case sensitive for purposes of identifying a user introduces a grave security risk.  Implementers of OpenID should be cautious when using case-insensitive string comparisons and be aware that in most cases checks should be case sensitive.   OpenID Claimed &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=cyNbGj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=cyNbGj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=GhqW6J"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=GhqW6J" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=x9twwj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=x9twwj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=O0i7gj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=O0i7gj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=OcMfL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=OcMfL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/330512977" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/07/case-for-case-sensitive-openid-url.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-289744742864386049</id><published>2008-07-03T19:18:00.001-07:00</published><updated>2008-07-03T19:31:30.585-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-07-03T19:31:30.585-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">How to use DotNetOpenId's Attribute Exchange extension</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/289744742864386049/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=289744742864386049" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/289744742864386049?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/289744742864386049?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/326293622/how-to-use-dotnetopenid-attribute.html" title="How to use DotNetOpenId&amp;#39;s Attribute Exchange extension" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">DotNetOpenId supports OpenID extensions, but does not provide samples for using any except the Simple Registration extension.  Since the Attribute Exchange extension (AX) was added recently, which is more extensible and generally usable than Simple Registration, sites using OpenID should consider using this extension, perhaps in addition to Simple Registration, to ease your web visitor's new user&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=FxwPij"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=FxwPij" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=zIjwGJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=zIjwGJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=u6uQTj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=u6uQTj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=qSferj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=qSferj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=dfKGL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=dfKGL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/326293622" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/07/how-to-use-dotnetopenid-attribute.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-2514020446391126381</id><published>2008-07-03T18:36:00.001-07:00</published><updated>2008-08-27T08:16:21.840-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-08-27T08:16:21.840-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">How to add OpenID to your ASP.NET forms web site without using ASP.NET controls</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/2514020446391126381/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=2514020446391126381" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2514020446391126381?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2514020446391126381?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/326271469/how-to-add-openid-to-your-aspnet-forms.html" title="How to add OpenID to your ASP.NET forms web site without using ASP.NET controls" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><content type="html">Although DotNetOpenId makes adding OpenID support to your ASP.NET web site as easy as dropping a control on your page design surface, there are reasons you may want to take the lower-level approach of writing a bit of the code yourself. DotNetOpenId fully supports both scenarios. In this post, I'll walk through a best practice minimal sample of how to get it working without using the controls.  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=Cz8U8j"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=Cz8U8j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=Dd5PyJ"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=Dd5PyJ" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=TseB0j"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=TseB0j" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=z6zVUj"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=z6zVUj" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=5BYWL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=5BYWL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/326271469" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/07/how-to-add-openid-to-your-aspnet-forms.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-4228256567512752036</id><published>2008-06-11T19:53:00.001-07:00</published><updated>2008-06-25T06:24:14.367-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-06-25T06:24:14.367-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">Why Yahoo! says your OpenID site's identity is not confirmed</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/4228256567512752036/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=4228256567512752036" title="9 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4228256567512752036?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4228256567512752036?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/310112750/why-yahoo-says-your-openid-site.html" title="Why Yahoo! says your OpenID site&amp;#39;s identity is not confirmed" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">9</thr:total><content type="html">Are you building an OpenId 2.0 relying party site and having your visitors who use Yahoo! as their Provider see this message?     Warning: This website has not confirmed its identity with Yahoo! and might be fraudulent. Do not share any personal information with this website unless you are certain it is legitimate.   Here is what you need to do to get rid of this warning:     Write an XRDS &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=9F08Di"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=9F08Di" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=XODJxI"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=XODJxI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=xumQwi"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=xumQwi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=7DRxyi"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=7DRxyi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=VrxdL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=VrxdL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/310112750" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/06/why-yahoo-says-your-openid-site.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-4026896536567532548</id><published>2008-06-04T16:44:00.001-07:00</published><updated>2008-06-04T16:46:30.163-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-06-04T16:46:30.163-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><title type="text">When NOT to use the C# "as" keyword</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/4026896536567532548/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=4026896536567532548" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4026896536567532548?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/4026896536567532548?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/304896074/when-not-to-use-c-keyword.html" title="When NOT to use the C# &amp;quot;as&amp;quot; keyword" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><content type="html">Both C++ and C# offer the cast () operator.  C# also offers the "as" operator syntax which does almost the same thing and is considered by some to look prettier and be more C#'ish.  But using the "as" keyword has downsides that you may not know about. Consider the following two methods.  Please skip the question of "Why would you take an object and cast to a string instead of just casting to a &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=FkB7fi"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=FkB7fi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=qfLBZI"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=qfLBZI" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=fhjWIi"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=fhjWIi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=JsCLwi"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=JsCLwi" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=B7QQL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=B7QQL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/304896074" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/06/when-not-to-use-c-keyword.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-8586777094687573057</id><published>2008-04-28T16:29:00.003-07:00</published><updated>2008-04-29T09:42:41.868-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-04-29T09:42:41.868-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><title type="text">Uri.AbsoluteUri and Uri.ToString() are NOT the same</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/8586777094687573057/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=8586777094687573057" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8586777094687573057?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8586777094687573057?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/279704486/uriabsoluteuri-and-uritostring-are-not.html" title="Uri.AbsoluteUri and Uri.ToString() are NOT the same" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total><content type="html">If you're familiar with the System.Uri class you know that it has a couple of ways of becoming a string for purposes of communication: its AbsoluteUri property and its ToString() method.  What I didn't find out until very recently was the significant difference between the two.  Since the difference led to functional bugs in production code, I thought I'd share the knowledge to help you avoid the&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=MqHmSg"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=MqHmSg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=2zeSbG"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=2zeSbG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=6hkeDg"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=6hkeDg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=gMbIag"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=gMbIag" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=JV9WL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=JV9WL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/279704486" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/04/uriabsoluteuri-and-uritostring-are-not.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-2521325352852115555</id><published>2008-04-24T21:33:00.001-07:00</published><updated>2008-04-24T21:33:56.092-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-04-24T21:33:56.092-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">DotNetOpenId 2.1.0 released, adds Attribute Exchange support</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/2521325352852115555/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=2521325352852115555" title="3 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2521325352852115555?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/2521325352852115555?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/277382100/dotnetopenid-210-released-adds.html" title="DotNetOpenId 2.1.0 released, adds Attribute Exchange support" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><content type="html">DotNetOpenId had a double release tonight.  Version 2.0.1 is a maintenance release with a few minor bug fixes.  Version 2.1 adds built-in support for the Attribute Exchange extension, but introduces a couple of small breaking changes.  Check out the VersionChanges page to decide which version is right for you.  Download the new versions here.  &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=uYBdcMg"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=uYBdcMg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=6AsbH4G"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=6AsbH4G" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=127MFng"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=127MFng" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=tmHrhOg"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=tmHrhOg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=zUrVL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=zUrVL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/277382100" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/04/dotnetopenid-210-released-adds.html</feedburner:origLink></entry><entry><id>tag:blogger.com,1999:blog-6894552.post-8926089148850968451</id><published>2008-04-22T07:16:00.001-07:00</published><updated>2008-06-11T20:15:49.604-07:00</updated><app:edited xmlns:app="http://purl.org/atom/app#">2008-06-11T20:15:49.604-07:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term=".NET" /><category scheme="http://www.blogger.com/atom/ns#" term="ASP.NET" /><category scheme="http://www.blogger.com/atom/ns#" term="OpenID" /><title type="text">Enhancing the ASP.NET MVC OpenID login experience</title><link rel="replies" type="application/atom+xml" href="http://blog.nerdbank.net/feeds/8926089148850968451/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=6894552&amp;postID=8926089148850968451" title="2 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8926089148850968451?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/6894552/posts/default/8926089148850968451?v=2" /><link rel="alternate" type="text/html" href="http://feeds.feedburner.com/~r/Jmpinline/~3/275434791/enhancing-aspnet-mvc-openid-login.html" title="Enhancing the ASP.NET MVC OpenID login experience" /><author><name>Andrew</name><uri>http://www.blogger.com/profile/13632400519774640095</uri><email>noreply@blogger.com</email></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total><content type="html">In a previous post, I present an example of how to accept OpenIDs for logins on your ASP.NET MVC site.  To keep the sample simple, I left out a feature that people very quickly noticed was lacking: getting registration data from the OpenID Provider (like email and postal address) so the user didn't have to type it in manually.  High demand leads me to follow up with this post on how to add those &lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=bxRttOg"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=bxRttOg" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=LC1SDTG"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=LC1SDTG" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=j3jub0g"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=j3jub0g" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=Gm3dang"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=Gm3dang" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/Jmpinline?a=bayHL"&gt;&lt;img src="http://feeds.feedburner.com/~f/Jmpinline?i=bayHL" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/Jmpinline/~4/275434791" height="1" width="1"/&gt;</content><feedburner:origLink>http://blog.nerdbank.net/2008/04/enhancing-aspnet-mvc-openid-login.html</feedburner:origLink></entry></feed>
