我正在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字节,这是奇怪的,这有时工作而其他人不工作。
我不知道解释这个问题的更好方法。如果你需要我可以提供更多的代码和更多的信息。
任何帮助,非常感谢。
你是什么路线的模样吗? – Denis 2011-06-05 04:32:19