我使用面向.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);
}
答案 0 :(得分:0)
所以我明白了:
两个版本的Visual Studio只为我提供了System.dll的以下版本信息: V2.0.50727
但是在进入Windows目录并检查文件之后,存在版本差异。 不包含属性的那个是版本 v2.0.50727.3053 ,而版本 v2.0.50727.3634 包含它们。
我认为问题是我在安装Windows后禁用了Windows更新。