【发布时间】:2019-01-02 19:25:35
【问题描述】:
我正在家里的个人服务器上构建一个应用程序(“Airport Finder”或 URL 的“af”)。当我从 VS 运行应用程序时,它运行良好。但是,当我通过浏览器运行它时,它不会。
控制器有两个动作。第一个提供最初显示时用于构建主页的数据。这个动作效果很好。它被称为剃刀视图的一部分,当您第一次访问该站点时,该视图会返回主页。
但是,第二个操作返回 404(未找到)。在用户在网站上选择各种标准后通过 AJAX 调用它。同样,如果您在从 Visual Studio (2017) 中运行网站后进行搜索,这个也可以正常工作。如果我直接从浏览器运行该站点,它会返回 404(尽管第一个操作可以很好地返回所有初始数据)。
我已经在 IIS 中安装了应用程序(部署到一个文件夹并在指向该文件夹的默认网站下创建了一个应用程序)。
网址如下所示:
http://localhost/af
但当我收到错误时,搜索 URL 看起来像这样:
http://localhost/Home/Search
我认为它应该是这样的:
http://localhost/af/Home/Search
但是,手动将其输入浏览器只会返回另一个 404(未找到)。
这是控制器代码:
public class HomeController : Controller
{
public IActionResult Index()
{
return View(Logic.GetGeneralAirportData());
}
[HttpPost]
public JsonResult Search(SearchCriteria sc)
{
SearchResults results = Logic.Search(sc);
return Json(results);
}
}
这是 AJAX 调用:
$.ajax({
method: "post",
url: "/Home/Search",
dataType: "json",
data: {
...
路线如下:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
【问题讨论】:
-
如果你打电话给localhost/af/Home/Search会发生什么?
-
@Robert 404。我将在上面添加该信息。谢谢。
-
你传递的数据是否与传入的对象匹配?
-
你的 MVC 路由是什么样的?
-
你说是通过浏览器运行的,你是怎么运行的?您是否在命令提示符下启动它? IIS?
标签: ajax asp.net-core