首页 新闻 会员 周边

asp.net mvc发布到iis出现问题【怀疑是UrlRouting的问题】

1
悬赏园豆:30 [已解决问题] 解决于 2011-11-28 10:20

我用vs2008写了个mvc2的网站程序,在vs中使用都正常,但是发布到iis 7后,发现访问area的时候出现问题,问题如下:

程序中有一个名为Manage的area,发到IIs后,前台所有页面访问正常,但是访问Manage【也就是网站后台】的时候,如果没有登录会跳转到Manage下面的Account/LogOn,但是网站的前台也有一个Account/LogOn,现在的情况是,访问Manage的时候,不是跳转到Manage下面的那个,而是跳转到了网站根目录下的那个去了。

怀疑是UrlRouting的问题,但是没有找到解决方案,求助高人相救!!!多谢

Global.asax.cs中RegisterRoutes中的代码如下:

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

AreaRegistration.RegisterAllAreas();

routes.MapRoute("Paging", "{controller}/{action}/{categoryId}/{pageIndex}",
new { controller = "Article", action = "Index" },
new[] { "ProManager.Controllers" }
);

routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },// Parameter defaults
new[] { "ProManager.Controllers" }// Namespaces 引入默认的命名空间
);
}

Manage下的代码如下:

    public class ManageAreaRegistration : AreaRegistration
{
public override string AreaName
{
get
{
return "Manage";
}
}

public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Manage_default",
"Manage/{controller}/{action}/{id}",
new { action = "Index", id = UrlParameter.Optional },
new[] { "ProManager.Areas.Manage.Controllers" }// Namespaces 引入默认的命名空间
);
}
}

项目结构如下:

问题补充:

大家亲自看一下,多谢

前台地址:http://www.cboqc.cn

后台地址:http://www.cboqc.cn/manage

而且在VS中直接跑是没有问题的,但是部署到IIS下面就出现这样的问题了

上不了岸的鱼的主页 上不了岸的鱼 | 老鸟四级 | 园豆:4613
提问于:2011-11-24 11:18
< >
分享
最佳答案
0

在Manage下的Views文件夹里应该有个webconfig文件

加上

<authentication mode="Forms">
<forms loginUrl="~/Manage/Account/LogOn" timeout="480"/>
</authentication>

试试

收获园豆:25
传说中的弦哥 | 菜鸟二级 |园豆:275 | 2011-11-24 12:06

应该不是这个问题,虽然用的是Forms验证,但是我并没有在Controller中使用AuthorizeAttribute,也没有在web.config文件添加对任何目录访问的限制。是否跳转到登录页面,是根据自己的逻辑判断的,我觉着是UrlRouting的问题。

 类似于下面的方式:

       if (not pass)
return RedirectToAction("LogOn", "Account");

 

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2011-11-24 12:23

@上不了岸的鱼: 

那就简单了 你的Url地址没有加上域的名称呗

比如前台的登录页是 /Account/LogOn

后台的登录页应该是/Manage/Account/LogOn

传说中的弦哥 | 园豆:275 (菜鸟二级) | 2011-11-24 12:27

@传说中的弦哥: 

这个我知道,现在的地址就是http://www.cboqc.cn/Manage/Account/LogOn ,但是呈现的内容不是后台Manang下面的LogOn,而是http://www.cboqc.cn/Account/Logon的内容

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2011-11-24 13:24

@传说中的弦哥: 

我觉得是这样的,系统把http://www.cboqc.cn/Manage/Account/LogOn路由到了前台的Views下面,所以呈现的才是http://www.cboqc.cn/Account/Logon里面的内容

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2011-11-24 13:27

@上不了岸的鱼: 

我也是部署在IIS7上的 也是用了area 没有问题的 

你的路由规则我看了也没啥问题,是不是低级错误啊? 仔细检查下命名间,AccountController类,LogOn方法

传说中的弦哥 | 园豆:275 (菜鸟二级) | 2011-11-24 13:32

@传说中的弦哥: 

现在发现我把publish后的网站程序部署到iis下会有这个问题,如果我把源程序直接部署到iis下,就没有问题

上不了岸的鱼 | 园豆:4613 (老鸟四级) | 2011-11-24 13:53
其他回答(1)
0

Url地址的问题

收获园豆:5
爱研究源码的javaer | 园豆:930 (小虾三级) | 2011-11-24 13:08
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册