В настоящее время я пишу веб-API ASP.NET Core, в котором в качестве параметра используется действие с зашифрованным значением.
Я пытаюсь протестировать это действие, и URL даже не будет отправляться в веб-браузер, сначала я подумал, что это может быть из-за слишком длинного URL, но я нашел этот ответ и мой URL намного ниже предела 2000 символов. Я изменил параметр на тривиальную строку ("привет"), и он передает нормально и запускает код. Я пытался и в Edge, и в IE11 во время отладки моего приложения, в Edge ничего не происходит вообще, в IE11 я получаю сообщение:
Windows не может найти 'http://localhost:5000/api/...' Проверьте орфографию и повторите попытку
В любом случае код в приложении не выполняется (я поставил точку останова в первой строке конструктора контроллеров, который не был достигнут).
Я включил пример одного из URL, который не работает ниже, а также код, который я использую для генерации зашифрованной строки, он использует HttpUtility.UrlEncode для преобразования зашифрованный byte[]
массив в строку.
Пример URL (тот, который не работает):
http://localhost:5000/api/testcontroller/doaction/%95%d6%f8%97%84K%1f%d4%40P%f0%8d%de%27%19%ed%ffAR%9c%c6%d4%b1%83%1e%9fX%ce%9b%ca%0e%d4j%d3Rlz%89%19%96%5dL%b1%16%e9V%14u%c7W%ee%89p%3f%f7%e6d%60%13%e5%ca%00%e9%a2%27%cb%d3J%94%a6%e1%b9%9c%914%06y%7e%0bn%ce%00%e5%7d%98b%85c%fa6m%7d%f7%f1%7b8%26%22%5e%1et%5e%10%0c%05%dd%deFAR%bb%93L%b9-W%e1K%82%d8%cc8%ce%e0%0c%2b%bc%19
Действие:
[HttpGet("[action]/{encrypted}")]
public string DoAction(string encrypted)
{
return "Executed";
}
Создать зашифрованную строку:
private string GenerateEncryptedString()
{
RSACryptoServiceProvider rsaProvider = new RSACryptoServiceProvider();
byte[] data = HttpUtility.UrlDecodeToBytes("AHMW9GMXQZXYL04EYBIW");
byte[] encryptedData = rsaProvider.Encrypt(data, true);
string encryptedString = HttpUtility.UrlEncode(encryptedData);
return encryptedString;
}
Не уверен, что я ошибаюсь в своей методологии преобразования зашифрованных данных в строку, но я был бы признателен за любые отзывы о том, как решить эту проблему.