1

HttpListenerRequest クラスを利用する .NET 3.5 を対象とする Visual Studio 2008 を使用して作成されたプロジェクトがあります。統計収集メカニズムの一部として、クラスのすべてのプロパティがファイルに書き込まれます。

最近、プロジェクトを VS2008 ソリューションから VS2010 ソリューションに変換しようとしましたが、変換中にエラーはまったく発生しませんでしたが、プロジェクトをビルドしようとするとすぐに、コンパイラは「HttpListenerRequest.ServiceName」が見つからないと主張し、 「HttpListenerRequest.TransportContext」。

これらのプロジェクトの両方で、ターゲット フレームワークは .NET Framework 3.5 です。参照されている DLL のバージョン番号を比較したところ、すべて同じように見えます。

Visual Studio の両方のバージョンで HttpListenerRequest クラスのメタデータを調べることにしました。2010 では期待どおりに ServiceName と TransportContext への参照がありませんが、VS2008 では両方のプロパティが表示されますが、概要の説明は表示されません。

次に、VS2010 で .NET 4 を対象とするプロジェクトを作成しました。これにより、上記の両方のプロパティを参照できます。

引き続き .NET 3.5 をターゲットにする必要があります。とにかく、コードを変更して多くの機能を除外することなく、これを機能させることができることをご存知ですか?

編集:要求どおり、これはコードです:

void Log(System.Net.HttpListenerContext context)
{
    string line =
            DateTime.Now.ToString() + "|" +
            context.Request.HttpMethod + "|" +
            context.Request.RawUrl + "|" +
            context.Request.Url.ToString() + "|" +
            context.Request.RemoteEndPoint.ToString() + "|" +
            (context.Request.UrlReferrer == null ? "None" : context.Request.UrlReferrer.ToString()) + "|" +
            (context.Request.ServiceName == null ? "None" : context.Request.ServiceName) + "|" + // Error Here on ServiceName
            context.Request.UserHostName + "|" +
            context.Request.UserAgent + "|" +
            context.Request.TransportContext.ToString() + "|" + // Error here on TransportContext
            context.Request.ProtocolVersion + "|" +
            context.Request.ContentLength64.ToString();

    WriteToFile(line);
}
4

1 に答える 1

0

だから私はそれを理解しました:

Visual Studioの両方のバージョンから、System.dllの次のバージョン情報のみが提供されました: v2.0.50727

しかし、Windowsディレクトリに移動してファイルを調べた後、バージョンの違いがあります。プロパティを含まないのはバージョンv2.0.50727.3053ですが、バージョンv2.0.50727.3634にはプロパティが含まれています。

問題は、WindowsをインストールしてからWindowsUpdateが無効になっていることだと思います。

于 2012-11-15T13:40:53.900 に答える