我用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下面就出现这样的问题了
在Manage下的Views文件夹里应该有个webconfig文件
加上
<authentication mode="Forms">
<forms loginUrl="~/Manage/Account/LogOn" timeout="480"/>
</authentication>
试试
应该不是这个问题,虽然用的是Forms验证,但是我并没有在Controller中使用AuthorizeAttribute,也没有在web.config文件添加对任何目录访问的限制。是否跳转到登录页面,是根据自己的逻辑判断的,我觉着是UrlRouting的问题。
类似于下面的方式:
if (not pass)
return RedirectToAction("LogOn", "Account");
@上不了岸的鱼:
那就简单了 你的Url地址没有加上域的名称呗
比如前台的登录页是 /Account/LogOn
后台的登录页应该是/Manage/Account/LogOn
@传说中的弦哥:
这个我知道,现在的地址就是http://www.cboqc.cn/Manage/Account/LogOn ,但是呈现的内容不是后台Manang下面的LogOn,而是http://www.cboqc.cn/Account/Logon的内容
@传说中的弦哥:
我觉得是这样的,系统把http://www.cboqc.cn/Manage/Account/LogOn路由到了前台的Views下面,所以呈现的才是http://www.cboqc.cn/Account/Logon里面的内容
@上不了岸的鱼:
我也是部署在IIS7上的 也是用了area 没有问题的
你的路由规则我看了也没啥问题,是不是低级错误啊? 仔细检查下命名间,AccountController类,LogOn方法
@传说中的弦哥:
现在发现我把publish后的网站程序部署到iis下会有这个问题,如果我把源程序直接部署到iis下,就没有问题
Url地址的问题