Мне удалось это исправить, и я хочу обобщить решение, так как оно требует бит из двух других ответов и биты в основном из Скотта Хансельмана в блоге.
Вам нужноЧтобы сделать эту работу несколько вещей:
Поместите [ValidateInput(false)]
в ваш метод действия.
Убедитесь, что ваш URL-адрес правильныйзакодировано (пример приведен в вышеприведенном посте), что делается, когда вы используете blobVariableName.Uri.AbsoluteUri
в качестве строки для передачи из вашего представления в ваш контроллер, поэтому вам не нужно ничего делать там.
Сделайте так, чтобы ваша строка запроса выглядела как http://site/controller/action?blobid=http%3A%2F%2F...
, а НЕ http://site/controller/action/http%3A%2F%2F...
, последняя не будет работать!
Кстати, с тех пор, как я начал, наш функционалтребования изменились, и теперь в базе данных хранится информация о каждом BLOB-объекте, что позволяет мне передавать параметры, отличные от URI-объекта BLOB-объекта, что представляется гораздо более безопасным способом воспроизведения.
Большая часть сообщества, похоже, согласна с тем, что плохая идея передать URI и открыть ваше приложение, чтобы позволить вам это сделать.