簡體   English   中英

從MVC Controller將長HTML字符串作為參數傳遞給Web API

[英]Pass long HTML string as parameter to Web API from MVC Controller

我正在開發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

我認為您需要增加允許的URL長度或查詢字符串的大小:

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

要允許更長或更短的路徑(URL中不包含協議,服務器名稱和查詢字符串的部分),請修改maxUrlLength屬性。 要允許更長或更短的查詢字符串,請修改maxQueryStringLength屬性的值。

參考:

擴大允許的URL范圍

好吧,我認為最好的辦法是,如果您嘗試某些內容傳遞給Web api,則應該使用POST請求在HTTP請求正文中發送HTML,因此您不必擔心內容大小。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM