這似乎很簡單,但我想語法/庫已經改變了很多次,找到一個樣本就像在一大碗肉醬中試圖追蹤一條意大利面條的整個路徑。
我有以下C# dotnet 5 Azure Function:
public static async Task<。 IActionResult> Run()
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null) ] HttpRequestData req,
ILogger日志)
string result = "看在上帝的份上,我只想回傳這個字串"。
我想回傳 "result "字串,并給出200的回應代碼。
我嘗試了以下方法
return result != null ? New OkObjectResult(result) : new StatusCodeResult(500) ;
但它沒有回傳一個字串,而是回傳:
。{
"Value"。"這里的結果變數的內容"。
"Formatters": [],
"ContentTypes": [],
"DeclaredType": null。
"StatusCode": 200.
}
有什么想法嗎?
uj5u.com熱心網友回復:
在新的 "隔離 "模式下,你的應用程式現在在一個獨立的行程中運行,與函式主機分開。Microsoft 提供了一個行程外運行時的好處清單,關鍵的好處是能夠在函式主機中擁有不同版本的 dll,而不會在運行時發生沖突(這是我過去不得不經常處理的事情)。
由于您的應用程式是作為主機的一個獨立行程運行的,因此您不能僅僅從您的函式中回傳一個物件參考作為輸出。該物件必須被序列化,以便被送回主機行程。這意味著輸入和輸出系結不能是功能物件,只能是可序列化的資料,因此大多數輸入和輸出系結(包括IActionResult)都被簡化了。默認情況下,如果你試圖回傳一個物件,它將被序列化為json,這就是你在回傳new OkObjectResult(result)時看到的情況。如果你想明確地將其序列化,你需要回傳HttpResponseData,而且比以前要復雜得多:
[Function("HttpFunction")]
public static HttpResponseData Run([HttpTrigger(AuthorizationLevel. Anonymous, "get", "post", Route = null)] HttpRequestData req)。
{
var json = JsonConvert.SerializeObject("看在上帝的份上,我只想回傳這個字串")。
var response = req.CreateResponse(HttpStatusCode.OK)。
response.Headers.Add("Content-Type"/span>, "text/json; charset=utf-8"/span>)。
response.WriteString(json)。
return回應。
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/307738.html
標籤:
上一篇:如何用密碼字符填充editText,使其中有隱藏的字符
下一篇:會話狀態在每次登錄時被重置
