Загрузите файл Silverlight в конечную точку контроллера MVC3 (сервер не доступен) - PullRequest
1 голос
/ 04 июня 2011

Я занимаюсь разработкой рекордера в 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 байт, что странно, но иногда это работает, а другие нет..

Я не знаю лучшего способа объяснить эту проблему.Если вам нужно, я могу предоставить больше кода и дополнительной информации.

Любая помощь очень ценится.

1 Ответ

0 голосов
/ 05 июня 2011

С помощью filddler я смог получить более подробную информацию об ошибке.Это было «загрузить файл потенциально опасное значение Request.Form было обнаружено от клиента ...».

Чтобы решить эту проблему, я указал тип содержимого webRequest для «multipart / form-data»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...