为什么ASP.NET-MVC不从子文件夹提供静态html?

时间:2015-06-03 02:48:20

标签: asp.net asp.net-mvc

我有一个有趣的问题,我无法解释。 我有一个ASP.NET-MVC应用程序,唯一的理由是让一个hhtp端点在服务器上发布一些东西。所有其他东西都是纯静态内容。

我的结构简化了:

Root/
    index.htm
    img/
        image.png
        test.html

在root中,我的index.html whis很好。如果我指向www.mysite.com/img/image.png,图像就会显示出来。 如果我指向www.mysite.com/img/test.html,我会收到500错误。 为什么html不是从子文件夹提供的,而是图像是?

编辑 - 更新

Url www.mysite.com显示index.html。 网址www.mysite.com/index.html导致500错误。

我无法向自己解释这一点。 ASP.NET MVC应用程序不提供html文件吗?www.mysite.com命中index.html因为(我猜)这是IIS设置中的默认设置吗?

根据这一观察,这个问题可以改为: 为什么img / image-png服务但img / test.html没有?

编辑更新2

根据热门请求,我发布了我的路线配置:

public static void RegisterRoutes(RouteCollection routes)
{
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
             name: "ApiPostData",
             url: "api/{action}",
             defaults: new { controller = "Api" }
        );
}

除了使用JSON rezult返回操作的单个操作之外,所有elese都是具有静态内容的简单静态网站。

我的控制员:

public class ApiController : Controller
{

    [HttpPost]
    public JsonResult PostSomeData(SomeData someData)
    {
            // save to database
            return Json(true);
    }
}

1 个答案:

答案 0 :(得分:1)

如果没有发布用于从控制器渲染视图的代码,则很难确定问题到底是什么。但我猜这是一个路由问题或者没有正确调用html文件。

为了服务您的其他test.html,您可以尝试:

public ActionResult Index()
{

    var staticPageToRender = new FilePathResult("~/img/test.html", "text/html");
    return staticPageToRender;
}