- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在检查一位同事的库时,我看到了他描述的两种使用他的新 StatusController 的方法。要么覆盖 GetStatus 方法以返回更具体的数据,要么让默认实现正常工作。好吧,所以我做了覆盖,因为我还不确定他对后者的意思是什么并且它有效。另一位同事问我是否看过后者,我回答
“好吧,不,因为如果我只引用项目/nuget 而不以某种方式告诉框架它就不会工作”
“试试吧”
“好的,但如果它有效,我会感到震惊”。
我现在错了。
然后我继续通过间接引用尝试这个,它仍然有效。我故意不显示任何代码,因为它只是来自 Visual Studio MVC web 应用程序或 web API 的样板 Controller 代码,您可以在几分钟内完成。但让我举个例子。
假设我正在为 www.electioncomission.gov.us 编写应用程序我想对特定文件格式进行一些特殊的字符串解析,有一个 nuget 包可以帮助我,我们称之为 VotingMachineFormatParser 并且我不知道它使用了一个名为 Tviker(俄语为 Tweaker)的包,不知道为什么但是他们发现它很有用。 Tviker 内部有一个名为 GosudarstvennoyeVmeshatelStvoController 的 Controller 类,它执行某事 - 这意味着状态干扰。
如果您现在转到 www.electioncomission.gov.us/gosudarstvennoyevmeshatelstvo某些代码正在运行,正在执行任何操作。
我认为您应该使用应用程序部件的概念从另一个组件中拉入 Controller 。请问,我错过了什么?这肯定不是我认为的那个洞吧?
编辑:我没有包含任何代码,因为这就是重点,您不需要任何代码。我忘了说这是 .Net Core 3.1+ 的"new"行为,它以前不是那样工作的。从另一个组件中拉入 Controller 的唯一方法是通过 ApplicationParts。
只需重命名两个样板类即可轻松测试它。
让 VStudio 在 .NetCore 5 中创建样板 WebAPI 并选中 OpenAPI 复选框。在两个单独的文件夹中执行此操作,但其中一个将 WeatherForecastController 重命名为 ToldYouController,并将 WeatherForecast 类重命名(通过重构)为 WeatherForecast1。
在第一个项目中引用带有 ToldYouController 的项目,运行,您将在 Swagger 中看到两个 Controller ,您实际上只是引用来实现它!您可以通过间接引用来尝试此操作,它也会执行相同的操作。
最佳答案
.NET Core 3.x 为引用 MVC 的程序集自动注册应用程序部分。
来自 Andrew Locks blog :
Note that in ASP.NET Core 3.x, when you compile an assembly thatreferences ASP.NET Core, an assembly attribute is added to the output,[ApplicationPart]. ASP.NET Core 3.x apps look for this attribute onreferenced assemblies and registers them as application partsautomatically.
关于 ASP.NET Core documentation
上的 ApplicationPartAttribute
:
Specifies an assembly to be added as an ApplicationPart.
In the ordinary case, MVC will generate ApplicationPartAttributeinstances on the entry assembly for each dependency that referencesMVC. Each of these assemblies is treated as an ApplicationPart.
由于 GosudarstvennoyeVmeshatelStvoController
是一个 Controller
,它的程序集将引用 MVC
,因此被注册为应用程序部分。
关于security - aspnetcore 是否有一个带有 Controller 的银河大小的安全漏洞,或者我错过了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65235718/
我有 ASP.NET Core Web 应用程序,我在其中使用 swagger 使用以下内容: public void ConfigureServices(IServiceCollection ser
AspNetCore.Mvc 和 AspNetCore.Mvc.Core NuGet 包之间有什么区别? Mvc.Core 只是简单的东西,而 Mvc 是一个包罗万象的包吗?这就是我从描述中猜测的he
我有一个包含多个项目的解决方案。我想创建一个项目的Docker镜像,因此我已经通过Docker支持添加了一个Dockerfile。我添加了Dockerfile的项目已在同一级别上依赖于其他项目。当我尝
我正在尝试使用 Ajax 将类列表返回到我的 View 这是我的ajax $(document).ready(function () { debugger; $.
我已经使用过几次这个包Microsoft.AspNetCore.TestHost在我的集成测试中托管 Asp.Net Core Web API 应用程序。 使用 Asp.Net Core 2.1 包
我正在尝试使用 Ajax 将类列表返回到我的 View 这是我的ajax $(document).ready(function () { debugger; $.
SignalR 客户端有两个 nuget 包: Microsoft.AspNetCore.SignalR.Client和 Microsoft.AspNetCore.SignalR.Client.Cor
这个错误的可能原因是什么: InvalidOperationException: No service for type 'Microsoft.AspNetCore.Identity.UserMana
使用 IFormFile 时,我在运行时收到此错误: Could not load type 'Microsoft.AspNetCore.Http.Internal.FormFile' from as
我正在尝试将我的 API 项目从 .net core 2.2 升级到 .net core 3.1。我在尝试进行 API 调用时遇到此异常。 "Message":"Could not load type
我在 netcoreapp3.0 Web 应用程序中使用 netstandard2.1 库。在 Startup 中添加我的服务时,出现以下错误: 'Could not load type 'Micro
我遇到以下异常: Cannot resolve parameter 'Microsoft.Extensions.Logging.ILogger logger' "At the moment (9/28
我们有使用 Swagger 的 .net core 2.1 mvc webapi 项目。 我们使用以下软件包: swashbuckle 的配置方式如下: services.AddMvcCo
我正在使用图书馆 "FluentValidation.AspNetCore": "6.4.0-beta3"在 .netcore WebApi在一个项目中。您可以在下面看到项目结构。如果我放置 Curr
怎么改Content root path在应用程序 .Net Core 3.0 ASP Blazor 上启动? 现在应用程序以输出开始 info: Microsoft.AspNetCore.DataP
我正在将 Microsoft.AspNetCore.Identity 添加到一个项目中,我得到了 InvalidOperationException: Unable to resolve servic
我有一个 Asp.Net Core 2 Mvc 项目。我目前正在尝试将数据访问分离到一个单独的项目中;但是,一旦我添加对数据访问库的引用,我就会遇到版本冲突: error NU1107: Versio
我理解的三大人生: 单例 有范围 短暂的 但我似乎找不到说明默认生命周期是多少(如果未明确定义)的文档。 最佳答案 默认情况下,注册类型的生命周期是 transient 的,即每次注入(inject)
我有一个正在泄漏线程的 ASP.NET Core 2 应用程序。我如何确定线程永不消亡的原因? 如果我在生产环境中运行该应用程序 10 分钟,IIS 开始吐出 502.3 Bad Gateway 错误
当尝试从新的DotNetCore类库导入AspNetCore MVC站点(WebApplication1)以便运行某些测试时,出现以下错误。 任何人都可以对编译器的工作原理以及为什么使用runtime
我是一名优秀的程序员,十分优秀!