【问题标题】:How to return HTML from ASP.NET Web API when given url给定 url 时如何从 ASP.NET Web API 返回 HTML
【发布时间】:2015-07-16 13:31:59
【问题描述】:

我想创建一个接受 url 并返回 url 的“HTML”页面的 WEB API。请问我该怎么做?我相信我有错误的代码。嗨,我对此很陌生。谢谢*

public HttpResponseMessage Get()
{
    var response = new HttpResponseMessage();
    response.Content = new StringContent("https://myurl.com");
    response.Content.Headers.ContentType = new    MediaTypeHeaderValue("text/html");
    return response;
}

【问题讨论】:

  • “相信我有错误的代码”为什么?请描述您遇到的错误或意外行为。

标签: html asp.net-mvc api model-view-controller


【解决方案1】:

你的意思是做这样的事情吗?

public HttpResponseMessage Get()
{
    var response = new HttpResponseMessage();
    System.Net.WebRequest req = System.Net.WebRequest.Create("https://myurl.com");
    using (System.Net.WebResponse resp = req.GetResponse())
      using (System.IO.StreamReader sr = 
                  new System.IO.StreamReader(resp.GetResponseStream()))
        response.Content = sr.ReadToEnd().Trim();

    response.Content.Headers.ContentType = new    MediaTypeHeaderValue("text/html");
    return response;
}       

【讨论】:

  • 是的!谢谢,但我收到此错误:“'System.Net.WebRequest':在 using 语句中使用的类型必须隐式转换为 'System.IDisposable'”。你知道这是什么吗?
  • 不能是 IDisposable。只需删除该行周围的 using - 更新代码
  • 太棒了,效果很好......但我还有一个问题:如果我想将它添加到 API 控制器(那个函数)到一个已经制作的 MVC 控制器中,如何才能工作?或改写我的问题,我希望在我的普通 MVC 控制器中可以访问 var“response”。我怎样才能将两者联系起来?谢谢!!!
  • 普通控制器和 API 控制器的工作方式略有不同,否则如果有相同的类型,您可以拥有一个包含响应的基类,任何派生类都可以访问。
【解决方案2】:

我的 AspNetCore 扩展:

    public static ContentResult GetDashboardAsHtml(this AbpController controller)
    {
        var request = WebRequest.Create($"{controller.Request.Scheme}://{controller.Request.Host}/hangfire");

        using var response = request.GetResponse();
        using var streamReader = new System.IO.StreamReader(response.GetResponseStream());
        return new ContentResult
        {
            Content = streamReader.ReadToEnd().Trim(),
            ContentType = "text/html"
        };
    }

【讨论】:

    猜你喜欢
    • 2015-01-05
    • 2016-04-23
    • 2016-03-16
    • 2018-07-17
    • 2016-12-17
    • 2016-10-14
    • 2015-01-10
    • 1970-01-01
    相关资源
    最近更新 更多