【发布时间】:2015-06-03 02:48:20
【问题描述】:
我有一个无法解释的有趣问题。 我有一个 ASP.NET-MVC 应用程序,唯一的原因是有一个 hhtp 端点来在服务器上发布一些东西。所有其他内容都是纯静态内容。
我的结构简化了:
Root/
index.htm
img/
image.png
test.html
在根目录中,我的 index.html 服务很好。如果我指向 www.mysite.com/img/image.png 图像将按原样显示。 如果我指向 www.mysite.com/img/test.html 我会收到 500 错误。 为什么 html 不是从子文件夹提供,而图像是?
编辑 - 更新
网址 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 返回动作的单个动作之外,其他一切都是具有静态内容的简单静态网站。
还有我的控制器:
public class ApiController : Controller
{
[HttpPost]
public JsonResult PostSomeData(SomeData someData)
{
// save to database
return Json(true);
}
}
【问题讨论】:
-
如何从控制器调用视图?可以发一下代码吗?
-
没有意见。只需一个简单的操作即可将 sometginh 写入 db 并返回 json。这是静态内容,应该与控制器无关。
-
您使用的是什么服务器(Casini\IIS Express\IIS)以及什么版本?如果是 IIS,您使用的是经典管道还是集成管道?路由设置?
-
您可能至少需要安装 ELMAH,以便获取异常日志。您还可以从安装 Glimpse 并逐步执行请求中受益。在这一点上,其他任何事情都是纯粹的猜想。
-
服务器是 IIS 8.0。我使用集成管道。事情在主机上,所以我的选择有限。路由设置非常简单。我会在上面做广告。但如果我没有出错,则不应为静态内容调用 asp.net-mvc 路由。
标签: asp.net asp.net-mvc