gpt4 book ai didi

asp.net-mvc - 使用 URL 重写时不正确的 Url.Action

转载 作者:行者123 更新时间:2023-12-03 14:58:46 27 4
gpt4 key购买 nike

我从 Action 得到了错误的 URL当我使用 URL 重写时的方法。
我在 web.config 中有这个重写规则:

<rule name="Old Objects 2" stopProcessing="true">
<match url="^transportbilar/(nya|begagnade|miljobilar)/(.*)$" ignoreCase="true"/>
<action type="Rewrite" url="/transportbilar/{R:2}"/>
</rule>
这将重写一个 URL,如 /transportbilar/nya/fiat/7s76s8dg/transportbilar/fiat/7s76s8dg ,工作正常,但 Url.Action对此感到困惑。
我使用这样的表达式在页面中创建一个 URL:
url.Action("Slideshow", "Object", new { id = objectId });
如果不使用 URL 重写(直接浏览页面),则会生成正确的 URL /Object/Slideshow/7s76s8dg ,但是当使用 URL 重写时, Action方法将页面 URL 的第一部分添加到生成的 URL 中,并产生错误的 URL /transportbilar/Object/Slideshow/7s76s8dg .
我认为我可以在重写规则中执行重定向,这样可以在请求 URL 更改时规避问题,但是有没有办法使其工作而不将其更改为重定向?
编辑:
我认为可能相关的路线是这些(按此顺序添加):
transportbilar/handlare/{id}/{criteria}
transportbilar/handlare
transportbilar
transportbilar/sokresultat/{criteria}
transportbilar/{brand}/{id}/{criteria}
{controller}/{action}/{id}
最后一条路由会捕获 url /Object/Slideshow/7s76s8dg倒数第二个将捕获 /transportbilar/fiat/7s76s8dg .

最佳答案

嗯.. 不要认为我可以帮助您获得基于重写的解决方案。我在内部猜测 IIS/ASP.NET 可能会遇到一个问题,当您尝试破解路由中的正则表达式映射时可能会遇到该问题 - 即 URL.Action无法从 Controller /操作组合确定正确的反向映射。

您可以检查以下关于您的 URL 的内容,如果这给了您有关问题所在的任何提示...

<%= Request.Path %>
<%= Request.RawUrl %>
<%= Request.ServerVariables["HTTP_URL"] %>

...查看是否在该阶段添加了`/transportbilar'。

在任何情况下,我都会认真地重定向旧 URL。这种方法将您当前的实际系统与遗留系统隔离开来,尤其是因为您的路线收集似乎已经足够复杂了。

关于asp.net-mvc - 使用 URL 重写时不正确的 Url.Action,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5801285/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com