【问题标题】:Pass long HTML string as parameter to Web API from MVC Controller将长 HTML 字符串作为参数从 MVC 控制器传递给 Web API
【发布时间】: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


【解决方案1】:

我认为您需要增加允许的 URL 长度或查询字符串大小:

<httpRuntime maxUrlLength="260" maxQueryStringLength="2048" />

允许更长或更短的路径(URL 中不 包括协议、服务器名称和查询字符串),修改 maxUrlLength 属性。要允许更长或更短的查询字符串, 修改 maxQueryStringLength 属性的值。

参考:

Expanding the Range of Allowable URLs

【讨论】:

  • 谢谢@JuanR,当我设置 maxQueryStringLength="2097151"
【解决方案2】:

好吧,我认为最好的方法是,如果你试图传递一些东西到 web api,你应该使用 POST 请求在里面发送 HTML http 请求正文,因此您无需担心内容大小。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-02
    • 2019-05-15
    • 1970-01-01
    • 2014-05-11
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    相关资源
    最近更新 更多