5

Mono (unix システムの下) で Uri オブジェクトを作成しています。これは非常に単純です (VStudio/Windows のように): new Uri(" http://my.url_here.com/ ")。次に、Uri を使用する別のシステム オブジェクトを作成しています: HttpSelfHostConfiguration()。

HttpSelfHostConfiguration のソース コードでは、受信した Uri は次の if ステートメントを使用して検証されます (Mono ソースで確認)。

if (!ReferenceEquals(baseAddress.Scheme, Uri.UriSchemeHttp) && !ReferenceEquals(baseAddress.Scheme, Uri.UriSchemeHttps))
    {
        throw Error.ArgumentUriNotHttpOrHttpsScheme("baseAddress", baseAddress);
    }

「ReferenceEquals(baseAddress.Scheme、Uri.UriSchemeHttp)」がfalseを返すため、「if」は失敗します。これは、Mono(Unixで実行)の場合、baseAddress.SchemeがUri.UriSchemeHttpと等しくないことを意味します。

baseAddress.Scheme = "http" および Uri.UriSchemeHttp = "http" である Mono(Unix) でのデバッグが確認されていることに注意してください。

VStudio では、これは完璧に機能します。

Mono(Unix) で ReferenceEqual がどのように機能するかを理解するのを手伝ってくれる人はいますか?最も重要なのは、上記の if ステートメントで検証に合格する有効な Uri を Mono で作成するにはどうすればよいですか??

どうもありがとう

4

0 に答える 0