控制器名称随机添加到URL

时间:2017-07-27 02:08:50

标签: javascript asp.net visual-studio-2015

我有一个名为HomeController的控制器类和

等客户端javascript代码
function upload(content) {
    var ajax = new XMLHttpRequest();
    ajax.open("POST", 'UploadImage', false);
    ajax.setRequestHeader('Content-Type', 'application/upload');
    ajax.send(content);
}

有时它使用网址https://localhost/MyApp/Home/UploadImage正常工作并上传数据。但有时它会失败,因为URL中没有控制器名称。 Chrome开发者工具将错误显示为:

POST https://localhost/MyApp/UploadImage 404 ()

但是如果我自己在URL中插入/ Home,将上面的代码更改为

    ajax.open("POST", 'Home/UploadImage', false);

然后有时它可以工作并使用https://localhost/MyApp/Home/UploadImage但有时会失败

POST https://localhost/MyApp/Home/Home/UploadImage 404 ()

如果我重新编译并重新开始,有时会改变相反的行为,但我无法预测何时。 GET请求也会发生同样的事情。我不知道是否应该在我的网址中包含控制器名称Home/。如何使其表现一致?

2 个答案:

答案 0 :(得分:1)

UploadImage是相对网址

location: localhost/MyApp/somepage.html => localhost/MyApp/UploadImage
location:  localhost/MyApp/Home/somepage.html => localhost/MyApp/Home/UploadImage

如果使用不同的域

,请使用/MyApp/Home/UploadImage或完整的网址

答案 1 :(得分:1)

这仅归因于相对网址,

它将根据您使用的代码或页面进行更改..因此,您可以选择

ajax.open("POST", '/Home/UploadImage', false);

ajax.open('POST', '@Url.Action("UploadImage","Home")', false);
相关问题