【发布时间】:2019-02-05 18:07:50
【问题描述】:
我开始在 .net 框架 4 上完成一个 Web 表单项目。我们想开始在 MVC 中开发新功能并开始慢慢迁移旧的旧功能,我们希望利用 MVC 的功能在 aspx 旁边。这最初是 asp.net 网络表单项目。
我从添加 MVC 开始。由于项目针对框架 4,我安装了 MVC 4.0.40804。此时升级框架可能比较麻烦,需要重构大量代码。
到目前为止,组件安装良好,项目开始运行。我开始检查 aspx 文件是否仍然有效。和繁荣。他们没有。我收到 404 错误。默认页面为 Account/Login.aspx,但已更改为 Account/Login?ReturnUrl=%2fAccount%2fLogin.aspx。
所以我开始检查并找到 this article from Scott Hanselman 并尝试配置我的 RouteConfig 文件,但没有任何效果。现在我的文件是这样的。
public static void RegisterRoutes(RouteCollection routes)
{
//THIS IS ADDED BY VS
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
//THIS I ADDED AT FIRST UPDATE
routes.IgnoreRoute("Account/{myWebForms}.aspx/{*pathInfo}");
routes.IgnoreRoute("{myWebForms}.aspx/{*pathInfo}");
//THIS I ADDED SECOND
routes.IgnoreRoute("Account/{*pathInfo}");
//THEN I ADDED THIS
routes.IgnoreRoute("Account/Login.aspx");
//THEN I ADDED THIS IN THE FINAL ATTEMPT
routes.MapPageRoute(
"login",
"Account/{myWebForm}",
"~/Account/Login.aspx"
);
//THIS IS DEFAULT CONFIG AND WAS HERE FROM THE BEGGINING
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new
{
controller = "Home",
action = "Index",
id = UrlParameter.Optional
}
);
}
所有尝试都没有改变行为,任何配置都按预期加载了 account.Login.aspx webForm,并且每次我在调试中运行时都会显示相同的错误。
如何配置它?
另一件事,我用 MVC Movies for MVC 4 起始指南代码指导自己。所以检查版本和文件。我还没有创建 bundleConfig 或 webapiconfig 类,只有 RouteConfig。
更新 这是 web 配置文件中的 and 标记。除了这些标签之外,还有连接字符串、应用程序设置和 WCF 服务设置的配置不包括在内。
最后有一个绑定到 Newtonsoft.json 依赖项的标签。
<system.web>
<httpRuntime requestValidationMode="2.0"/>
<compilation debug="true" targetFramework="4.0"/>
<authentication mode="Forms">
<forms loginUrl="~/Account/Login.aspx" timeout="2880"/>
</authentication>
<webServices>
<protocols>
<add name="HttpGet"/>
<add name="HttpPost"/>
</protocols>
</webServices>
<!-- <sessionState cookieless="AutoDetect" mode="StateServer" /> -->
</system.web>
【问题讨论】:
-
听起来您的路由已经与
MapPageRoute正确。你能提供web.config文件的sn-p吗?真正的问题在于匿名用户身份验证会触发重定向到使用表单身份验证而不是您自己的登录页面的错误登录 URL。 -
OK... 在这个我们项目中使用会员提供者。网络配置很长。你能指定需要哪些标签吗?我会尽快发布
-
我希望您显示配置文件的表单身份验证、用户和/或角色授权部分,这些部分与允许/拒绝用户请求有关。简单的成员资格提供程序意味着使用内置授权,如果请求的 URL 未经授权,则执行重定向。
-
@TetsuyaYamamoto 我将标签包含在您要求的设置中。除了登录表单 url 之后的 ~ 之外,我真的没有看到明显的错误。我不在 routeConfig Ignore 语句中使用它。
标签: c# asp.net asp.net-mvc webforms asp.net-mvc-routing