MVC在IIS新建应用程序发布后报404

xujun5031 2018-01-26 03:32:22
我有一个MVC的网站,在IIS里面发布的时候,新建站点发布,正常访问http://localhost:8085/Admin/Login,输入用户名密码正常登陆,登陆见下面代码

$('#loginForm').form('submit', {
url: '/Admin/Login',
onSubmit: function () {
},
success: function (data) {
data = $.parseJSON(data);
if (data.statusCode == "200") { location.href = "/Admin/Index"; }
else {
$.messager.alert('温馨提示', data.message, 'info', function () {
//status = true;
});
}
}
});


现在在默认站点下新建应用程序,别名tt,访问http://localhost/tt/Admin/Login也正常,但是输入用户名密码后,登陆的时候,实际访问的的url是http://localhost/Admin/Login ,中间少了tt这一层,

这问题要如何解决?
...全文
3364 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
dhy3610 2018-04-02
  • 打赏
  • 举报
回复
应该是路由配置w问题
Jason_Mao1 2018-02-21
  • 打赏
  • 举报
回复
RouteConfig 路由没有配置好,很明显。改了别名得重新配置一下 不能用默认的 。
秋的红果实 2018-02-19
  • 打赏
  • 举报
回复
你是只将登陆的文件放到tt了吗? 一般情况,将所有文件放到默认站点(或者建一个与默认站点并列的站点),然后路径用相对路径,站点内部自动去找这个路径 中间少了tt这一层, ==> 因为你的登陆 $('#loginForm').form('submit', { url: '/Admin/Login', 指定了url路径,提交后,当然是去这个路径了 你可以写url: 'tt/Admin/Login',但这样依赖性太强 最简单的做法是,将所有文件放到一个站点里(不单独建立tt),提交页面写成url: 'Admin/Login' 要想隐藏登陆页面的真实物理地址,可以考虑伪静态或者路由重写
春天的气息 2018-02-18
  • 打赏
  • 举报
回复
没那么复杂,是IIS配置和文件夹权限的事,IIS8里才会出现的。
webdiyer 2018-02-03
  • 打赏
  • 举报
回复
和路由配置没有关系,是url写死导致的问题,参考4楼的方法解决
truecoffeefox 2018-02-02
  • 打赏
  • 举报
回复
没有人疑惑为毛要用新建应用程序吗
加油馒头 2018-02-01
  • 打赏
  • 举报
回复
url: '/Admin/Login', 改为相对路径 url: 'Admin/Login',
传说之心 2018-01-30
  • 打赏
  • 举报
回复
盆友,这都哪朝哪代了,你还写死静态url???
razor的html帮助器里面有一个@Url.Action()方法,你这里404是因为你写死静态url,默认就是站点下的
guanyelong 2018-01-29
  • 打赏
  • 举报
回复
找到RouteConfig 类

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

            routes.MapRoute(
                name: "tt",
                url: "tt/{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }
    }
在 js 请求路径许改成

$('#loginForm').form('submit', {
           url: '/tt/Admin/Login',
                onSubmit: function () {                  
                },
                success: function (data) {
                    data = $.parseJSON(data);
                    if (data.statusCode == "200") { location.href = "/Admin/Index"; }
                    else {
                        $.messager.alert('温馨提示', data.message, 'info', function () {
                            //status = true;
                        });
                    }
                }
            });
zhuangjunx 2018-01-27
  • 打赏
  • 举报
回复
修改 RouteConfig 的路由配置,加上你的tt。
  • 打赏
  • 举报
回复
@Url.Action("Login","Admin")
应该是这样,上面的写反了
  • 打赏
  • 举报
回复
路径不要绝对写死,改成 @Url.Action("Admin","Login")
正怒月神 版主 2018-01-26
  • 打赏
  • 举报
回复
#1 说的对。 修改 RouteConfig 的路由配置,加上你的tt。
圣殿骑士18 2018-01-26
  • 打赏
  • 举报
回复
mvc是基于路由的,和绝对路径没关系。你只要调整一下路由配置,加上tt

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧