[英]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屬性的值。
參考:
好吧,我認為最好的辦法是,如果您嘗試將某些內容傳遞給Web api,則應該使用POST請求在HTTP請求正文中發送HTML,因此您不必擔心內容大小。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.