MVC 应用程序中 ASP.NET WCF 和 Routes.Add 的 ActionLink 行为

发布于 2024-12-17 01:24:54 字数 892 浏览 1 评论 0原文

我想在我的 C#.Net 项目中托管 WCF 4 和 MVC 3。但是当我添加 WCF 的服务路径时,Html.ActionLink 开始为 MVC 应用程序创建错误的 url。我的路由表创建为:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

RouteTable.Routes.Add(new ServiceRoute("api1/projects", new WebServiceHostFactory(), typeof(Projects)));
routes.MapRoute(
   "Default", // Route name
   "{controller}/{action}/{id}", // URL with parameters
   new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

上面的路由表创建了 WCF 和 MVC 应用程序的正确访问路径,但是 Html.ActionLink 创建了编辑链接,而

http://localhost:8000/api1/projects?action=Edit&controller=technology&id=2 

不是

http://localhost:8000/technology/Edit/2

如果我省略了以 RouteTable.Routes.AddActionLink 按预期工作(当然不是 WCF)。如何添加 WCF 路由并确保 actionlink 行为不会更改?

I'm want to host both WCF 4 and MVC 3 in my C#.Net project. But when I add the service paths for WCF, Html.ActionLink starts creating a wrong url for MVC app. My route table is created as:

routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

RouteTable.Routes.Add(new ServiceRoute("api1/projects", new WebServiceHostFactory(), typeof(Projects)));
routes.MapRoute(
   "Default", // Route name
   "{controller}/{action}/{id}", // URL with parameters
   new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);

Above route table creates the right access paths to both the WCF and MVC applications, but Html.ActionLink creates the edit links as

http://localhost:8000/api1/projects?action=Edit&controller=technology&id=2 

instead of

http://localhost:8000/technology/Edit/2

If I omit the line starting with RouteTable.Routes.Add, the ActionLink works as expected (and of course not the WCF). How can I add the WCF routes and make sure actionlink behaviour doesn't change?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一杆小烟枪 2024-12-24 01:24:54

尝试将 ServiceRoute 注册放在 MapRoute 之后。

Try putting ServiceRoute registration after MapRoute.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文