带有.net WebApi图像的HTML页面

时间:2017-02-15 11:20:42

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

我使用.net WebApi使用JSON数据公开不同的端点。现在我需要一个特定的端点返回HTML页面。我已经像这样实现了它。

[HttpGet]
[Route("htmlPage/{htmlPageId}")]
public HttpResponseMessage GetHtmlPage(string htmlPageId) {
    string rawHtml = m_logic.GetHtmlPageById(htmlPageId);
    HttpResponseMessage response = new HttpResponseMessage {Content = new StringContent(rawHtml)};
    response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
    return response;
}

我遇到的问题是该HTML页面有一些图像。我不知道如何公开它们,因为现在当我从浏览器调用端点时,我收到了404未找到的错误。我的项目中有一个文件夹,包含这些图像和一些我必须返回的Javascript脚本。

我该怎么做?

编辑: 这是我的HTML

的一部分
  <html lang=\"en\">
  <head>
    <title> Simplest HTML </title>
    <meta name=\"description\" content=\"The Html served\">
    <meta name=\"author\" content=\"acostela\">
    <script type="text/javascript" src="./public/scripts/my-api.js"></script>
  </head>
  <body>
    <h1> The first Simplest html served!!</h1>
    <img src="./public/img/success.jpg"/></br></br>
  </body>
</html>

我的文件夹结构如下

 -->Html
     |
     |
      ---> myFirstHtml.html
     |
     |
      ---> public
           |
           |
           ---> img
           |    |
           |    |
           |    ---> success.jpg
           |
           |
           ---> scripts
                |
                |
                ---> my-api.js

2 个答案:

答案 0 :(得分:0)

WebApi可以提供静态文件。

所以你只需要在你的html文件中设置正确的链接。

例如:

enter image description here

您的<img>将是这样的:

<img src="~/Content/img/email-icon.png" />

答案 1 :(得分:0)

最后我解决了。我使用owin + katana添加了一个静态文件服务器中间件。

我使用此

更改了我的启动类
ChromeOptions options = new ChromeOptions();
options.addExtensions(new File("./extension_0_2_0_10.crx"));

DesiredCapabilities capabilities = DesiredCapabilities.chrome();
capabilities.setCapability(ChromeOptions.CAPABILITY, options);

WebDriver driver = new RemoteWebDriver(new URL( "http://192.168.99.100:4444/wd/hub"), capabilities);
driver = new Augmenter().augment(driver);
driver.get("http://google.com");

现在,当我的webApi请求我的html页面时,自动提供所有公开的图像脚本和文件。

这段代码是什么将我的http请求“/ html / public”转换为PhysicalFileSystem中指定的真实文件系统路径。

希望这有助于任何人。