Silverlight上载文件到MVC3控制器端点(找不到服务器响应)

时间:2011-06-04 12:59:56

标签: silverlight upload

我正在开发一个Silverlight录像机,我需要在录制过程完成后将数据从流上传到Web服务器。 在服务器端,我使用的是ASP.NET MVC 3,我使用FileUpload方法创建了一个Controller。

public class FileUploaderController : Controller
{
    [HttpPost]
    public ActionResult FileUpload(string fileName)
    {
    ....
    }
}

在silverlight applet中,上传是由部分组成的,大约20000个字节。服务器Web配置配置为接受更大量的数据。 服务器返回异常“远程服务器返回错误: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 :(得分:0)

使用filddler,我能够获得有关错误的更详细信息。这是“从客户端检测到上传文件潜在危险的Request.Form值...”。

要解决此问题,我已将webRequest的内容类型指定为“multipart / form-data”