自将项目转换为VS2010后,HttpListenerRequest属性不再可用

时间:2012-11-15 12:55:50

标签: c# visual-studio-2010 visual-studio-2008 projects-and-solutions httplistenerrequest

我使用面向.NET 3.5的Visual Studio 2008创建了一个项目,该项目使用了HttpListenerRequest类。作为统计信息收集机制的一部分,该类的所有属性都将写入文件。

我最近尝试将项目从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);
}

1 个答案:

答案 0 :(得分:0)

所以我明白了:

两个版本的Visual Studio只为我提供了System.dll的以下版本信息: V2.0.50727

但是在进入Windows目录并检查文件之后,存在版本差异。 不包含属性的那个是版本 v2.0.50727.3053 ,而版本 v2.0.50727.3634 包含它们。

我认为问题是我在安装Windows后禁用了Windows更新。