【发布时间】:2018-04-24 02:27:42
【问题描述】:
我有一个 asp.net 网站,最初加载时似乎无法解析为 Default.aspx。当我在本地机器上调试时,它加载默认没有问题。除非我尝试导航到“localhost:#####/”。然后它给出了404错误。当我将它部署到登台服务器时,给它一个虚拟路径“mywebapp”,然后从“mydomain.com/mywebapp”加载它,它也会给出 404。我已将 Default.aspx 设置为 IIS 中默认文档的列表顶部。如果我导航到“mydomain.com/mywebapp/default”,则站点加载正常。有什么建议?我会粘贴代码,但它是一个大型网站,老实说,我不确定我在寻找什么。
编辑: 在我的站点中,我还使用 DataTables 来显示和编辑数据。在 ajax 调用中,我以前可以使用以下 url 调用控制器:
api/MyController/idvalue
但自从发现这一点后,我不得不回过头来为网址添加前言以使它们起作用:
mywebapp/api/MyController/idvalue
控制器:
public class MyController : ApiController
{
[Route("api/MyContoller/{idvalue}")]
[HttpGet]
[HttpPost]
public IHttpActionResult MyControllerMethod(intidvalue)
{
}
}
WebApiConfig:
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
RouteConfig:
public static class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
var settings = new FriendlyUrlSettings();
settings.AutoRedirectMode = RedirectMode.Permanent;
routes.EnableFriendlyUrls(settings);
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//routes.MapRoute(
// name: "Default",
// url: "{controller}/{action}/{id}",
// defaults: new { action = "Index", id = UrlParameter.Optional }
// );
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
【问题讨论】:
-
这是一个 MVC 还是常规的 webforms 网站?我问的原因是要知道您是否设置了路由器。您还尝试将默认页面添加到 web.config 吗? stackoverflow.com/questions/1913058/set-default-page-in-asp-net。您是否也尝试过 mydomain.com/mywebapp/ (末尾带有斜线)?
-
是的,如果有意义的话,它不是。它主要是网络表单,但使用了 MVC 的某些方面。我也试过最后的斜线。那篇文章中的解决方案并没有解决它。我已经编辑了我的问题以记录其他有趣的事情