MVC3 Web应用程序将不会发布

时间:2012-06-14 12:21:23

标签: asp.net-mvc visual-studio-2010 asp.net-mvc-3

我正在努力学习MVC 3,所以我是一个菜鸟。现在,我只想创建一个基本站点,即使用jQuery和CSS的HTML页面。当我使用MVC时,我并不真正需要一个模型,因为实际上没有任何数据传递给应用程序。但是,这对我来说是个问题,因为我在尝试发布此站点时收到HTTP 403.14 Forbidden错误。我认为应用程序的结构方式存在问题,当我访问localhost:1081网站时,它无法正常执行。以下是我的全部内容:

HomeController.cs

public class HomeController : Controller
{
    //
    // GET: /Home/

    public ActionResult Index()
    {
        return View();
    }

}

}

这只返回Index.cshtml的视图。

Index.cshtml:

@{ViewBag.Title = "My Web Site";} <h2>Web Site Title</h2>

我的所有HTML代码都放在_Layout.cshtml中。使用jQuery和CSS。当我执行调试选项时,该网站工作正常,但当我尝试发布它时,我禁止403.14。我已经运行了内联命令aspnet_regiis -i,它似乎工作,但不允许项目运行。

Global.asax:

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

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }

如果我将_Layout中的代码移动到索引,它就不起作用。有没有办法将它链接到Index.cshtml?

的Web.config:

<system.webServer>
<defaultDocument enabled="true">
  <files>
    <add value="_Layout.cshtml" />
  </files>
</defaultDocument>
<validation validateIntegratedModeConfiguration="false"/>
<modules runAllManagedModulesForAllRequests="true"/>

我不想浏览目录,我也尝试过使用此选项。如果我启用,它允许我查看内容但不呈现页面。

所以有两个问题:1。)我是否需要拥有模型,即使我没有将任何数据传递给应用程序,只是尝试渲染网站? 2.)我的网站设置/结构是否正确或我在这里做错了什么?

谢谢, 尼克

1 个答案:

答案 0 :(得分:0)

不,你不需要模特。

首先,不要使用默认文档。 MVC会覆盖默认文档处理并使用路由系统。

其次,您不希望尝试使用“布局”页面作为文档。布局就像一个母版页,用于创建真实文档的包装器。

第三,说“不会发布”意味着您在通过发布机制实际发布网站时遇到问题。你的问题不在于你无法发布,因为很明显它是这样做的,但你的网站没有正在执行。

第四,403.14意味着它正在尝试列出目录的内容,但如果MVC配置正确,则不会发生这种情况,因为MVC的路由接管了。这意味着你在asp.net管道中的某个地方遇到了问题。

你在哪里发布?您是否配置IIS以在此位置设置站点?鉴于您尝试从不同的端口号访问该站点,在我看来,您没有设置IIS来执行此操作,而是尝试使用用于调试的相同端口。

要发布站点,必须将IIS配置为使用该位置。