В настоящее время я отправляю зашифрованный запрос на главный контроллер asp.net.Ниже приведена структура тела запроса:
{
"body": "pEbXVvl1ue95eGQywK/q80cGHjYk+2VNPYEgnRgU+vI="
}
До этого я реализовал фильтр IActionFilter
, поэтому в OnActionExecuting(ActionExecutingContext context)
, где я расшифровываю упомянутое выше тело запроса (ключ тела)
После расшифровки я получил расшифрованное тело запроса, как показано ниже:
{
"Urno":"URN123456"
}
После расшифровки я хочу передать расшифрованное тело запроса (упомянутое выше "Urno":"URN123456"
) контроллеру
Я пыталсяпреобразовать строку в байт, затем передать ее в Request.body
, но безуспешно:
public void OnActionExecuting(ActionExecutingContext context)
{
var request = context.HttpContext.Request;
request.EnableRewind();
request.Body.Position = 0;
using (var reader = new StreamReader(request.Body))
{
var bodyString = reader.ReadToEnd(); //{ "body": "pEbXVvl1ue95eGQywK/q80cGHjYk+2VNPYEgnRgU+vI="}
if (bodyString != "")
{
var data = JObject.Parse(bodyString);
var key = data.GetValue("body");
var keybytes = Encoding.UTF8.GetBytes("808080808080808011");
var iv = Encoding.UTF8.GetBytes("8080808080808080111");
var encrypted = Convert.FromBase64String(key.ToString());
var decriptedFromJavascript = DecryptStringFromBytes(encrypted, keybytes, iv); //{ "Urno":"URN123456"}
byte[] bytes = Encoding.ASCII.GetBytes(decriptedFromJavascript);
request.Body = new MemoryStream(bytes); // here i am trying to change request body
}
}
}
// controller
[HttpPost("[action]")]
public async Task<string> GetInvestorUrno(Urnoinvestor InfoReq){
}
// class
public class Urnoinvestor
{
public string Urno{ get; set; }
}
Я хочу изменить тело запроса и передать расшифрованный запрос контроллеру