c# - 如何从 asp.net core web 应用程序向自己发出请求

标签 c# asp.net .net asp.net-web-api

假设我有一堆渲染文本部分的 Controller 。它们可以通过浏览器的 url 访问。但其中一些只是其他人的组合。我想要的是请求几个文本并将其连接起来。为什么?

  • 它们需要时间来构建,但很可能已经缓存
  • 不要发明我自己的缓存并使用 ASP.NET

可能我可以 System.Net.WebClient.DownloadString("https://myserver/path") 但是效率很低。


下面的@derloopkat 亲切地问我有关代码示例的问题

[ApiController]
[Route("foo")]
public abstract class FooController: ControllerBase
{   
   [HttpGet]
   public string Get()
   {
     return "foo";
   }
}

[ApiController]
[Route("bar")]
public abstract class BarController: ControllerBase
{   
   [HttpGet]
   public string Get()
   {
      return "bar";
   }
}

[ApiController]
[Route("bar_plus_foo")]
public abstract class CompositeController: ControllerBase
{   
   [HttpGet]
   public string Get()
   {
      // TODO: how to fetch result of FooController and BarController 
      // to return concatenation?       
   }
}

最佳答案

我们通常不会这样在controller中写业务逻辑。 您可以创建一个服务并在该服务中隐藏您的业务逻辑。代码将是这样的:

public class BarService
{
    public string GenerateBar(string param)
    {
        return "bar";
        //Or any business logic that you have
    }
}

例如,您可以搜索洋葱架构并在 github 中查看示例 顺便说一下,不要让 Controller 抽象。 希望这有帮助

关于c# - 如何从 asp.net core web 应用程序向自己发出请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51695819/

相关文章:

c# - 使用 Entity Framework 等待数据更改时,是否有比 Thread.Sleep 更好的替代方法?

asp.net - 在 ASP.NET 中使用角色

c# - 空 gridview 虽然 sqldatasource 有值

c# - 更改 PropertyGrid 左侧集合编辑器/ View 的宽度

java - ASPxGridView java 的替代品?

c# - document.readyState == "complete"始终为假。状态始终为 "interactive"

c# - WPF - FrameworkElement - 枚举所有后代?

c# - .aspx.cs(代码隐藏)或 BLL 或两者中的验证代码?

javascript - 页面回调后更改js函数

C# - 事件源提供者是否必须遵循名称-产品-组件命名模式