【发布时间】:2025-11-29 18:30:01
【问题描述】:
当我在我的机器上运行我的项目时,它在 http://localhost:53998/ 上运行,但是当我将它部署到 http://test.myserver.com/MyApp/ 时,所有链接都会中断。我使用的是相对路径波浪号 (~),所以导航链接类似于:
<a href="~/SomeCtrl/Index">Some Action</a>
在本地主机上,这工作正常(当 root 是 / 时),但是当我在 /MyApp/ 下部署我的项目时,它会将操作链接到 http://test.myserver.com/SomeCtrl/Index 而不是 http://test.myserver.com/MyApp/SomeCtrl/Index,所以我总是得到 404。
这不是波浪号 (~) 应该注意的吗?我在这里做错了吗?
编辑:
这可以正常工作:
@Html.ActionLink("Some Action", "Index", "SomeCtrl")
还有这个:
<a href="@Url.Action("Index", "SomeCtrl")">Some Action</a>
【问题讨论】:
-
您是否尝试过使用
@Url.Action("ActionName", "ControllerName")?例如@Url.Action("Index", "SomeCtrl") -
您也可以使用
@Html.ActionLink()扩展方法和相同的参数(加上“链接文本”),这将为您生成链接的 HTML -
不知道,但这里可能有一个线索:*.com/questions/4563235/… - 看起来它使用了
Request.ApplicationPath- 也许它选择了错误的路径 - 或者你可能已经将你的应用程序定义为更高级别IIS 比你想要的站点根目录 -
除了由框架处理的代码之外,您不能在任何东西中使用 tilda。如您所见,“某些操作”不起作用。 *.com/questions/3077558/…
-
@KenBrittain 这不是真的,MVC4 及更高版本会正确地将
~处理成相对网址。您链接到的问题是在那之前的。
标签: asp.net-mvc-4 relative-path razor-2