Tôi đang cố gắng để có một ứng dụng giao diện điều khiển để gửi một tệp XML tới một ứng dụng web được phát triển trong ASP.NET MVC 3 và nhận một XML khác làm phản hồi .Cách tải tệp lên ASP.NET MVC từ ứng dụng bảng điều khiển
Lỗi được thông báo trong ứng dụng giao diện điều khiển là:
The remote server returned an error: (500) Internal Server Error.
Khi tôi nhận được Fiddler2 chạy, tôi thấy lỗi này:
Object reference not set to an instance of an object.
Mã trong việc áp dụng giao diện điều khiển là:
static void Main(string[] args)
{
var wc = new WebClient();
byte[] response = wc.UploadFile("http://mysite.com/Tests/Test", "POST", "teste.xml");
string s = System.Text.Encoding.ASCII.GetString(response);
Console.WriteLine(s);
Console.ReadKey();
}
Mã trong Bộ điều khiển MVC là:
[HttpPost]
public ActionResult Test(HttpPostedFileBase file)
{
XElement xml = XElement.Load(new System.IO.StreamReader(file.InputStream));
var test = new MyTest();
return File(test.RunTest(xml), "text/xml", "testresult.xml");
}
RunTest()
hoạt động tốt, vì phương pháp này hoạt động khi tôi tải tệp lên qua biểu mẫu (trong phương thức có cùng tên, sử dụng phương thức GET). RunTest()
trả về XML bằng phản hồi.
Khi tôi gỡ lỗi ứng dụng MVC, tôi thấy sự cố: biến số file
là null!
Làm cách nào để khắc phục điều đó? Tôi phải thay đổi gì trong ứng dụng giao diện điều khiển của mình để thực sự gửi tệp? Hay là trường hợp thay đổi phương pháp MVC?
Và trước khi thử sử dụng WebClient
, tôi đã thử mã này tại đây: http://msdn.microsoft.com/en-us/library/debx8sh9.aspx và có cùng kết quả.
Đã hoạt động! Tôi chỉ cần xóa 'as HttpPostedFile', nó không được biên dịch ... Cảm ơn bạn rất nhiều! –
cảm ơn bạn đời, đã giúp tôi! – f0x