gpt4 book ai didi

asp.net-mvc - 为什么 Visual Studio 2010 会混合 System.Web 和 System.Web.Abstractions?

转载 作者:行者123 更新时间:2023-12-01 21:59:10 25 4
gpt4 key购买 nike

Visual Studio 2010 似乎混合了上述库。

此代码示例来自 Steven Sanderson 所著的《Pro ASP.NET MVC2 Framework》一书。

[TestMethod]
public void HomePage_Recognizes_New_Visitor_And_Sets_Cookie()
{
// Arrange: First prepare some mock context objects
var mockContext = new Mock<HttpContextBase>();
var mockRequest = new Mock<HttpRequestBase>();
var mockResponse = new Mock<HttpResponseBase>();

// The following lines define associations between the different mock objects
// (i.e. tells Moq what alue to use for tMockContext.Request)
mockContext.Setup(x=> x.Request).Returns(mockRequest.Object);
mockContext.Setup(x=> x.Response).Returns(mockResponse.Object);
mockRequest.Setup(x=> x.Cookies).Returns(new HttpCookieCollection());
mockResponse.Setup(x=> x.Cookies).Returns(new HttpCookieCollection());

var homeController = new HomeController();
var requestContext = new RequestContext(mockContext.Object, new RouteData());
homeController.ControllerContext = new ControllerContext(requestContext, homeController);

// Act
ViewResult viewResult = homeController.HomePage();

// Assert
Assert.AreEqual(String.Empty, viewResult.ViewName);
Assert.IsTrue((bool)viewResult.ViewData["IsFirstVisit"]);
Assert.AreEqual(1, homeController.Response.Cookies.Count);
Assert.AreEqual(bool.TrueString, homeController.Response.Cookies["HasVisitedBefore"].Value);
}

我的项目引用了 System.Web 和 System.Web.Abstractions 库。

当代码文件仅“使用 System.Web”时,我收到两个错误:

  1. (第 25 行“Assert”下方)类型“System.Web.HttpResponseBase”是在未引用的程序集中定义的。您必须添加对程序集“System.Web.Abstractions,Version=3.5.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35”的引用。
  2. (“Cookies”一词下的第 25 行和第 26 行)“System.Web.HttpResponseBase”不包含“Cookies”的定义,并且没有扩展方法“Cookies”接受类型为“System.Web.HttpResponseBase”的第一个参数' 可以找到(您是否缺少 using 指令或程序集引用?)

如果我将“using System.Web.Abstractions”添加到代码文件并构建项目,上述错误就会消失,但随后会出现以下错误:

  1. 命名空间“System.Web”中不存在类型或命名空间名称“Abstractions”(是否缺少程序集引用?)

有趣的是,在这两种情况下,当我在 Response 之后放置一个点时,Intellisense 都会提示我正确的选择(即 Response.Cookies)。看起来 Intellisense 拥有有关 HttpResponseBase 的信息,而构建引擎却没有。

知道是什么原因造成的吗?

最佳答案

您能否仔细检查一下您的项目引用下是否同时具有 System.WebSystem.Web.Abstractions

使用从 Apress 网站下载的本书的源代码,我可以毫无错误地构建您的代码,但是当我删除对 System.Web.Abstractions 的引用时,我得到了相同的行为,包括您注意到的智能感知信息提示。

关于asp.net-mvc - 为什么 Visual Studio 2010 会混合 System.Web 和 System.Web.Abstractions?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3834913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com