Asp.Net Core ControllerBase.Response,哪里有源代码?

时间:2016-06-07 16:03:15

标签: c# github asp.net-core-mvc

ASP.NET核心现在是开源的,这真是太棒了,特别是因为文档仍在编写中,但我经常很难找到我想要查看的代码。

例如,我想看看控制器如何实现Response.Redirect但代码在哪里?

我能够在GitHub上找到ControllerBase的RC2版本代码:https://github.com/aspnet/Mvc/blob/1.0.0-rc2/src/Microsoft.AspNetCore.Mvc.Core/ControllerBase.cs

通过克隆github.com/aspnet/Mvc存储库,我能够使用VS2015来了解HttpResponse使用的ControllerBase类是abstract类。但我现在走到了尽头。

HttpResponse使用的ControllerBase具体实施的代码在哪里?这是一个非常重要的问题:您是如何找到该代码的?

1 个答案:

答案 0 :(得分:3)

回答我自己的问题以防其他人帮助。

HttpResponse类的源代码可以在这里找到:https://github.com/aspnet/HttpAbstractions/blob/1.0.0-rc2/src/Microsoft.AspNetCore.Http.Abstractions/HttpResponse.cs但它是一个抽象类而不是具体的类。事实证明,具体实现是一个名为DefaultHttpResponse的类,该类的代码位于此处:https://github.com/aspnet/HttpAbstractions/blob/1.0.0-rc2/src/Microsoft.AspNetCore.Http/Internal/DefaultHttpResponse.cs

这个源代码很难找到的原因之一是它是GitHub上ASP.NET Core MVC存储库中未包含的项目的一部分。虽然MVC存储库确实包含许多项目,但包含HttpResponseDefaultHttpResponse的项目不在其中。

那我怎么找到代码的位置?我在Visual Studio中浏览ASP.NET Core MVC源代码,我最终注意到当我点击F12导航到HttpResponse类的ControllerBase代码时,它在顶部显示了以下内容页面Assembly Microsoft.AspNetCore.Http.Abstractions的浅灰色。

这让我用Google搜索Microsoft.AspNetCore.Http.Abstractions,确定它位于不同的Git存储库中。一旦我克隆了该存储库,我就可以使用Visual Studio来搜索HttpResponse。然后我右键单击类名去实现。这让我进入DefaultHttpResponse类,这是HttpResponse类的具体实现。是啊!

我猜其中一件事就是git存储库的名称以“Abstractions”结尾。最初我认为这样的存储库只包含接口等,但事实证明Microsoft.AspNetCore.Http.Abstractions存储库包含几个项目,其中一些包含许多与HttpContext包含的类的实现,包括HttpResponse,具体实现为DefaultHttpResponse

screen shot