2011-06-04 57 views
1

我正在Silverlight中开发一个记录器,并且在记录过程完成后,我需要将数据从流上传到Web服务器。 在服务器端我使用的是ASP.NET MVC 3,并且我使用方法FileUpload创建了一个Controller。Silverlight上传文件到MVC3控制器端点(服务器Respose NotFound)

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

在silverlight小程序中,上传是按部件进行的,大约20000字节。 Servers web config被配置为接受更大量的数据。 服务器返回一个异常“远程服务器返回错误: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); 

EDIT

我的路由配置默认为:

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字节,这是奇怪的,这有时工作而其他人不工作。

我不知道解释这个问题的更好方法。如果你需要我可以提供更多的代码和更多的信息。

任何帮助,非常感谢。

+0

你是什么路线的模样吗? – Denis 2011-06-05 04:32:19

回答

0

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

为了解决这个问题,我指定的内容类型的WebRequest为“multipart/form-data的”