【发布时间】:2018-07-11 21:25:27
【问题描述】:
我正在开发 Web API 以及 MVC 应用程序。现在我的要求是将 HTML 作为字符串从 MVC 控制器传递给 Web API 方法。
我在我的 MVC 应用程序中使用了以下代码来调用 Web 服务:
using (var client = new HttpClient())
{
byte[] Result = null;
client.BaseAddress = new Uri("http://localhost:1004/");
HttpResponseMessage Res = await client.GetAsync(string.Format("api/Method?htmlString={0}", htmlString));
if (Res.IsSuccessStatusCode)
{
Result = Res.Content.ReadAsByteArrayAsync().Result;
}
if (Result != null)
{
//Work with byte array
}
}
下面是我的方法在 Web API 中的声明
[HttpGet]
[Route("api/Method")]
public HttpResponseMessage Method(string htmlString)
{
try
{
//work with htmlString
}
catch (Exception ex)
{
HttpError err = new HttpError(ex.ToString());
return Request.CreateResponse(HttpStatusCode.NotFound, err);
}
}
但是上面的代码不起作用,我得到一个错误
然后我实现了日志记录,发现Web API中的参数htmlString是空的,这不应该发生,因为我正在传递我的HTML
我什至尝试在 MVC 中编码 HTML,然后将其传递给 Web API,但这也不起作用。
在这种情况下我该怎么办?
[已编辑] 我试图从 MVC 应用程序传递简单的 HTML,如下所示,我在 Web API 中得到了值
<html>
<body>
Hello World.
</body>
</html>
但是它不适用于我的长 HTML
【问题讨论】:
-
一个问题是 BaseAddresses 总是需要以“/”结尾
-
它已经在我的应用程序中了,我忘了在这里添加它
-
将其放入请求正文的 POST 请求可能更适合此类数据,并且更符合 REST。
标签: c# asp.net-mvc asp.net-mvc-4 asp.net-web-api2