我在从 VS.Net 2008 / MVC 1 迁移到 VS.NET 2010 (+C# 4.0) / MVC 2 的过程中遇到了问题。
Web.config 已经进行了更新,网站在 Cassini 上运行良好,但我的问题是在 IIS 6 上部署。
我已将网站更新为使用 ASP.Net 4,但无论尝试什么 URL,都会出现 404 错误。就好像路由没有被考虑进去一样(是的,通配符映射 已经完成)。
我不明白这个问题,也找不到任何有趣的信息......谢谢您的建议!
我在从 VS.Net 2008 / MVC 1 迁移到 VS.NET 2010 (+C# 4.0) / MVC 2 的过程中遇到了问题。
Web.config 已经进行了更新,网站在 Cassini 上运行良好,但我的问题是在 IIS 6 上部署。
我已将网站更新为使用 ASP.Net 4,但无论尝试什么 URL,都会出现 404 错误。就好像路由没有被考虑进去一样(是的,通配符映射 已经完成)。
我不明白这个问题,也找不到任何有趣的信息......谢谢您的建议!
好的,我得到了答案(感谢我的同事)
当从ASP.Net 2.0迁移到ASP.Net 4.0时, 如果你遇到相同的问题, 那么请检查Web Service Extension中是否允许了ASP.Net v4。
在我的情况下,在安装了.Net Framework 4之后,它被禁止了。
Will和Mark:谢谢你们的帮助,希望能对其他人有所帮助。
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);
}
}
}
这最终为我解决了问题:
我之前发表过评论,但有点仓促。我的评论是回复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 });
routes.MapRoute(
"Default", // Route name
"{controller}/{action}.aspx/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional });
啊哈拉瓦拉花生酱和果冻三明治。:0)
DirectoryEntry w3svc = new DirectoryEntry("IIS://localhost/W3SVC");
w3svc.Invoke("EnableWebServiceExtension", "ASP.NET v4.0.30319");
w3svc.CommitChanges();
HTH