Я занимаюсь разработкой рекордера в Silverlight, и мне нужно загрузить данные из потока на веб-сервер после завершения процесса записи.На стороне сервера я использую ASP.NET MVC 3 и создал контроллер с методом FileUpload.
public class FileUploaderController : Controller
{
[HttpPost]
public ActionResult FileUpload(string fileName)
{
....
}
}
В апплете silverlight загрузка выполняется частями, около 20000 байт за раз.Веб-конфигурация серверов настроена на прием большего количества данных.Сервер возвращает исключение «Удаленный сервер возвратил ошибку: NotFound.».
В этом случае запрос не достиг действия, и я не могу понять, почему.
Пример кода, которыйиспользуется для начала загрузки:
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 байт
- поток запроса закрытия (получен из request.EndGetRequestStream)
- ожидание ответа сервера (от webRequest.EndGetResponse) Здесь возникает ошибка.
В моем случае я никогда не отправляю более 20000 байт, что странно, но иногда это работает, а другие нет..
Я не знаю лучшего способа объяснить эту проблему.Если вам нужно, я могу предоставить больше кода и дополнительной информации.
Любая помощь очень ценится.