#silverlight #upload
#silverlight #загрузка
Вопрос:
Я разрабатываю рекордер в silverlight, и мне нужно загрузить данные из stream на веб-сервер после завершения процесса записи. На стороне сервера я использую ASP.NET MVC 3, и я создал контроллер с помощью метода FileUpload.
public class FileUploaderController : Controller
{
[HttpPost]
public ActionResult FileUpload(string fileName)
{
....
}
}
В апплете silverlight загрузка выполняется частями, примерно по 20000 байт за раз. Веб-конфигурация серверов настроена на прием большего объема данных.
Сервер возвращает исключение «Удаленный сервер вернул ошибку: не найдено»..
В этом случае запрос не достиг действия, и я не могу понять, почему.
Пример кода, который используется для запуска загрузки:
UriBuilder httpHandlerUrlBuilder = new UriBuilder("http://localhost:37386/FileUploader/FileUpload/?fileName=" Guid.NewGuid() ".wav");
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(httpHandlerUrlBuilder.Uri);
webRequest.Method = "POST";
webRequest.ContentType = "multipart/form-data"; // This solved my problem
webRequest.BeginGetRequestStream(new AsyncCallback(WriteToStreamCallback), webRequest);
Редактировать
Моя конфигурация маршрута по умолчанию:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
Когда отправляется небольшой объем данных, все проходит нормально, и сервер получает запрошенные данные. Но когда отправляемые данные больше, я просто получаю ответ NotFound. Для меня это не имеет никакого смысла, то, что я делаю, это:
- HttpWebRequest для отправки 20000 байт
- закрыть поток запросов (полученный из запроса.EndGetRequestStream)
- дождитесь ответа сервера (от WebRequest.Конечный результат ответа) Здесь возникает ошибка.
В моем случае я никогда не отправляю более 20000 байт, что странно, что иногда это работает, а у других нет.
Я не знаю лучшего способа объяснить эту проблему. Если вам нужно, я могу предоставить больше кода и дополнительной информации.
Любая помощь очень ценится.
Комментарии:
1. как выглядит ваш маршрут?
Ответ №1:
С помощью filddler я смог получить более подробную информацию об ошибке. Это был «потенциально опасный запрос на загрузку файла.Значение формы было обнаружено от клиента …».
Чтобы решить эту проблему, я указал тип содержимого веб-запроса на «multipart / form-data»