您的位置:首页 > 编程语言 > ASP

asp.net mvc 发布到iis上无法访问资源解决方案

2013-09-24 13:31 597 查看


旧版的IIS只能把那些具有特定扩展名的URL请求发送给ASP.NET框架。比如/SomePage.aspx请求会被映射到ASP.NET框架,而/SomePage.htm则不会被映射到ASP.NET框架。

因此,要想使URL Routing能够正常工作,我们必须要修改默认路由,使其包含文件扩展名,以映射到ASP.NET 框架中去。能够映射到ASP.NET框架中的扩展名有.aspx .axd 和.ashx

修改后的Global.asax文件如下所示

Listing 2 – Global.asax (modified with extensions)
[b]using[/b] System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
namespace MvcAppCS
{
public class GlobalApplication : System.Web.HttpApplication
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}.aspx/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = ""}// Parameter defaults
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
}


注意:在修改完Global.asax文件后要记得重新编译我们的ASP.NET MVC应用程。

在上面的代码中,我们做了一个很小但很重要的修改,我们把默认路由修改为如下格式:

{controller}.aspx/{action}/{id}

由于这种更改,因此ASP.NET MVC应用程路由只能映射下面这种形式了

/Home.aspx/Index

/Product.aspx/Details/3

/Product.aspx

当我们修改完路由表后,我们还要确保程序中的所有超连接的URL地址也都已做相应的修改。换句话说,要保证所有的超链接导航地址中都包含.aspx扩展名。如果我们使用Html.ActionLink()方法生成的超链接,那我们不需要对超链接做更改。

第二种方案

(二)创建Wildcard Script Map

如果我们不想修改ASP.NET MVC应用程序中的URL地址,并且可以访问到Web服务器,那我们可以通过创建wildcard script map方式来把所有请求映射到ASP.NET框架中去。这样就避免修改默认的由表了。

要搞明的一点是,这种修改会使IIS对每个请求都会处理,那怕是请求一张图片、ASP页面、HTML页面。因此使用wildcar script map会使操作更隐式。

启用IIS7.0的wildcard script map

1. 在Connections窗口中选择我们的应用程序

2. 确定选中了Features视图。

3. 双击Handler Mappings按钮。

4. 单击Add Wildcard Script Map,如图。

5. 输入aspnet_isapi.dll文件的路径

6. 在Name文本框中输入MVC

7. 点击OK按钮。





在IIS6.0中创建wildcar script map的步骤:

1、 右击站点,选择属性

2、 选择“Home Directory”选项卡

3、 点击“Configuration”按钮

4、 选择“Mappings”选项卡

5、 点击“Insert”按钮,如下图所示

6、 在Executeable文本框中输入aspnet_isapi.dll文件所在的路径

7、 去掉Verify that file exists复选框前的勾。

8、 点击OK按钮





当我们配置完wildcard script map我们可以使用默认的路由表来处理下面的URL地址

/Home/Index

/Product/Details/3

/Product

总结

这篇文章中我们解释了如何在旧版本(或IIS7.0传统模式下)IIS中使用ASP.NET MVC。我们讨论了两种方式来解决URL Routing与旧版本IIS协同工作问题 :修改默认路由表或创建wildcard script map

第一种方法需要我们修改ASP.NET MVC应用程序,这种做法的好处是,我们不需要操作web服务器,而只是修改一下程序中的路由表即可。

第二种方法是需要我们创建wildcard script map,这种做法的好处是,我们不需要修改我们的代码,但缺点是会影响ASP.NET MVC程序的性能。

此文来自 http://developer.51cto.com/art/200907/137977.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐