Lesson learned: Uri.ToString() and Uri.AbsoluteUri are NOT the same thing. Uri.ToString() decodes the URL to make it easier to read. Uri.AbsoluteUri leaves the encodings alone, which is important if you're doing anything with the Uri.
… tested against domain.com. Also added several new wildcard tests.
As described in Google Code Issue 71, some other OpenID implementations have issues when a return_to implies a port and realm explicitly gives the same one, or vice versa. This change addresses the issue by attempting to be consistent across return_to and realm URLs by always implying ports that may be implied rather than explicitly specifying them sometimes.
A misused CultureInfo.CurrentUICulture caused unhandled exceptions. I enhanced the unit tests to simulate actually using the RP web page in addition to the OpenIdRelyingParty class directly. More CurrentUICulture bugs need to be fixed, but this one is the only one causing failures in the regular code paths.
We're not using them at all.