【问题标题】:Why am I getting strange indexing error in VS 2010?为什么我在 VS 2010 中出现奇怪的索引错误?
【发布时间】:2013-01-23 14:38:34
【问题描述】:

我在 Visual Studio 2010 中创建了一个 C# Web 应用程序。然后我从另一个 VS 解决方案中复制了一些 ASPX 文件(以及背后的代码)。我必须通过并清理一些参考资料和东西。最终我把所有东西都清理干净了,除了一件奇怪的事情。在 VS 中,我在以下代码行中看到红色波浪线:

if (Request.QueryString["b"] != null)

这些行位于 Request.QueryString["b"] 部分下方。当我将鼠标悬停在它上面时,我看到以下错误消息:

无法将带有 [] 的索引应用于“System.Collections.Specialized.NameValueCollection”类型的表达式

这是在页面后面的代码的 Page_Load 事件中。真正奇怪的是,如果我构建项目,它构建得很好,没有任何问题,红色的波浪线消失了。但是,如果我关闭并重新打开文件 - 我看到相同的红色波浪线,VS 再次抱怨。

有什么想法吗?我很困惑。我尝试重建、清理解决方案、关闭 VS 并重新打开等。

编辑:这是文件的使用部分。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ServiceModel;
using System.Collections.Specialized;

另外,这里是 ASPX 文件的标头:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="beamswitch.aspx.cs" Inherits="AIMSWeb.data.beamswitch" %>

【问题讨论】:

  • 你是否安装了 ReSharper 之类的插件?
  • 没有。奇怪的是,这个完全相同的代码在其他解决方案中没有任何问题。此外,它还在对 Request 对象(Request.Form、Request.ServerVariables)的所有引用下显示红色波浪线。很奇怪。
  • 如果您在 QueryString 上按 F12,您会到达哪里?你有使用 System.Collections.Specialized 吗?
  • 试试if(!String.IsNullOrEmpty(Request.QueryString["b"]))
  • Corey,.cs 文件顶部的 using 部分是什么样子的,您是否厌倦了更改项目以将其升级到 .net 4.0 项目然后再次降级到 3.5 重新编译它.. ?

标签: c# asp.net visual-studio-2010


【解决方案1】:

所以我想我找到了发生这种情况的原因。我正在构建的 ASP.NET 应用程序将成为我已经构建的 WCF 服务的客户端。创建客户端过程的一部分是使用 Microsoft 实用程序生成 app.config 文件和 proxy.cs 文件。然后在我的 ASP.NET 应用程序中使用这些文件来提供我可以使用的代理代码,以便我可以从我的 ASP.NET 文件中调用该服务。当我从解决方案中删除这些文件时,问题就消失了。

具体来说,我猜测问题与我的服务中的一种方法试图序列化并将 Request.Form 对象作为参数发送这一事实有关。我想知道我的 proxy.cs 文件中的代码是否导致冲突或其他原因。我将尝试重建我的服务以使用字典或其他东西,然后看看是否能解决问题。很奇怪。感谢大家的帮助。

【讨论】:

  • 是的,就是这样。我重建了我的服务以使用 Dictionary 对象,而不是尝试将 Request.Form 作为参数传递。然后我使用 svcutil.exe 重新创建了我的 proxy.cs 文件。然后我将 proxy.cs 文件添加到我的项目中。现在一切都恢复正常了。哇!
猜你喜欢
  • 2011-08-25
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 2018-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多