我正在开发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
答案 0 :(得分:3)
我认为你需要增加允许的URL长度或查询字符串大小:
<httpRuntime maxUrlLength="260" maxQueryStringLength="2048" />
允许更长或更短的路径(URL的那部分没有 包括协议,服务器名称和查询字符串),修改 maxUrlLength属性。要允许更长或更短的查询字符串, 修改maxQueryStringLength属性的值。
参考:
答案 1 :(得分:0)
好吧,我认为最好的方法是,如果您尝试传递某些内容到网络API,您应该使用POST请求将HTML内部发送http请求正文,因此您无需担心内容大小。