ASP.NET根URL未解析为Default.aspx

时间:2017-11-10 19:29:10

标签: asp.net iis web

我有一个asp.net网站,在最初加载时似乎无法解析为Default.aspx。当我在我的本地机器上调试它加载默认没问题。除非我尝试导航到“localhost:##### /”。然后它给出了404错误。当我将它部署到登台服务器时,给它一个虚拟路径“mywebapp”,并从“mydomain.com/mywebapp”加载它,它也提供了404。我已将Default.aspx设置为IIS中默认文档列表的顶部。如果我导航到“mydomain.com/mywebapp/default”,网站加载就好了。有什么建议?我会粘贴代码,但它是一个大型网站,老实说,我不确定我在寻找什么。

enter image description here

编辑: 在我的网站中,我也使用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 }
        );
    }
}

1 个答案:

答案 0 :(得分:0)

找到解决方案。在我的RouteConfig.cs中,如果我注释掉这一行:

controller = "Home",

它运作得很好。

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
            }
        );
    }
}

但是,我不完全确定为什么会这样。所以,如果有人能够向我解释这将是伟大的!