【问题标题】:Deploying Asp.Net MVC 2 /C# 4.0 application on IIS 6在 IIS 6 上部署 Asp.Net MVC 2 /C# 4.0 应用程序
【发布时间】:2011-01-20 03:24:08
【问题描述】:

我在从 VS.Net 2008 / MVC 1 迁移到 VS.NET 2010 (+C# 4.0) / 时遇到问题>MVC 2

web.config has been updated,该站点在 Cassini 中运行良好,但我现在的问题是部署在 IIS 6 上。

我更新了网站以使用ASP.Net 4 运行, 但无论我尝试什么 URL,我总是遇到 404 错误。好像没有考虑路由(是的,wildcard mapping 已经完成了)。

我不明白这个烂摊子,也无法谷歌搜索任何有趣的东西...... 感谢您的建议!

【问题讨论】:

  • 我尝试部署使用“添加新项目...”创建的默认项目,但遇到了同样的问题。仍在谷歌上寻找答案,但希望得到您的建议......
  • 我总是被通配符映射和该死的“验证文件存在”复选框搞砸了。擦洗所有东西,从第一格开始,然后按照这个:blog.stevensanderson.com/2008/07/04/… 当我说擦洗所有东西时,我的意思是擦洗所有东西。不要假设某事是正确的。从第一格开始,对所有内容进行三次检查。
  • 我又做了一次,但还是不行。我正在使用的应用程序在 MVC 1 中运行良好,但由于我传递给 .Net 4 / MVC 2,路由被破坏......正如我在之前的评论中所说,我尝试使用示例应用程序但无法使其工作.谢谢你的帮助。还有其他建议吗?
  • 我有同样的问题,我得到了 404 的一切,我从正方形开始
  • 值得注意的是,在 .NET 4 中,不再需要使用 isapi 通配符映射来让无扩展名 url 在 IIS6 中工作。 blogs.msdn.com/tmarq/archive/2010/04/01/…

标签: visual-studio visual-studio-2010 asp.net-mvc-2 iis-6


【解决方案1】:

我想我知道发生了什么:在 IIS6 以及通配符映射中,您需要一个将文件夹请求路由到 MVC 处理程序的默认文档 (Default.aspx)。

MVC1 项目模板中包含一个,但 MVC2 中包含 it has been removed

Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="YourNameSpace._Default" %>

<%-- Please do not delete this file. It is used to ensure that ASP.NET MVC is activated by IIS when a user makes a "/" request to the server. --%>

Default.aspx.cs:

using System.Web;
using System.Web.Mvc;
using System.Web.UI;

namespace YourNameSpace
{
    public partial class _Default : Page
    {
        public void Page_Load(object sender, System.EventArgs e)
        {
            // Change the current path so that the Routing handler can correctly interpret
            // the request, then restore the original path so that the OutputCache module
            // can correctly process the response (if caching is enabled).

            string originalPath = Request.Path;
            HttpContext.Current.RewritePath(Request.ApplicationPath, false);
            IHttpHandler httpHandler = new MvcHttpHandler();
            httpHandler.ProcessRequest(HttpContext.Current);
            HttpContext.Current.RewritePath(originalPath, false);
        }
    }
}

当你说“好像没有考虑到路由”时,我怀疑它实际上没有,这是你的问题。

【讨论】:

  • 感谢您的回答。不幸的是,我已经有一个 Default.aspx,它的代码隐藏几乎相同。我尝试使用您的代码(唯一的区别是结束 Rewritepath 回到原始路径),但它仍然无法正常工作。尽管如此,我还是得到了一个大线索:当我尝试我的根 url(或该应用程序的任何 url)时,IIS 非常快地返回 404 错误,这是 iisreset 或服务器重新启动后的事件。我想它不会加载任何东西!使用 C# 4.0 以这种方式检查问题。 (仅供参考,网址是push.widgetbooster.com
  • 哇,这个问题我快疯了(我在 .net 3.5 w/IIS 6 中使用 mvc 2),但这解决了它!谢谢!
【解决方案2】:

好的,我得到了你的答案(感谢同事)

从 ASP.Net 2.0 迁移到 ASP.Net4.0 时, 如果你遇到同样的问题, 然后检查 Web 服务扩展,如果 ASP.Net v4 允许

在我的情况下,安装 .Net framework 4 后,它被禁止了。

Will & Mark : 感谢您的帮助,希望对其他人有所帮助。

【讨论】:

    【解决方案3】:

    这终于为我解决了:

    我之前评论过,有点过早。我对 Mark B 的帖子的评论是让我的初始索引视图显示出来,但是每当我导航到任何其他视图时,我都会收到 404 错误。

    我也被这个特定论坛中的绿色复选标记批准的解决方案分心,但我什至无法在我的桌面上看到 IIS 6 中的 Web 服务器扩展文件夹;因此,从启用 aspnet 4.0 的角度来看,我无法控制,尽管我通过运行以下命令行确保它已安装:

    C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319> aspnet_regiis -i
    

    现在终于可以让我导航到除了我的主页/索引之外的其他视图:

    在您的 VS 2010 解决方案的 Global.asax.cs 文件中,您将在 RegisterRoutes 方法中看到如下代码:

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

    我只是在标签的 {action} 部分之后添加了“.aspx”,如下所示:

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

    还有 ahla wahla 花生酱和果冻三明治。 :0)

    【讨论】:

      【解决方案4】:

      如果您想在 C# 中执行此操作,只需添加 System.DirectoryServices 引用,这部分应该可以很好地完成工作。

      DirectoryEntry w3svc = new DirectoryEntry("IIS://localhost/W3SVC");
      w3svc.Invoke("EnableWebServiceExtension", "ASP.NET v4.0.30319");
      w3svc.CommitChanges();
      

      HTH

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-07-27
        • 2013-07-17
        • 1970-01-01
        • 2011-06-21
        • 1970-01-01
        • 2014-07-22
        • 1970-01-01
        • 2015-06-23
        相关资源
        最近更新 更多