我在Google找不到更好的解决方案。
我有一个MVC应用程序。 当我使用Visual Studio时,URL是
http://localhost:12345/NewApp - 这有效
当我将其部署到我的本地网络服务器时,URL为
http://win2k12/NewApp - 这有效
我的路由器上有一个端口转发到端口8878以指向win2k12服务器。我有一个域名(例如http://mydomain.uk),它被设置为指向我的实际IP xxx.xxx.xxx.xxx地址。因此,当我想从外部访问我的MVC应用程序时,我使用此URL
http://mydomain.uk:8878/NewApp - 这只适用于第一级。当我通过像这样的ajax调用Action时
从上图中,baseUrl只返回导致错误的http://mydomain.uk/NewApp(没有端口)。我目前的解决方法是硬编码不理想的端口。
我使用了baseUrl,因为如果我不这样做,虚拟目录就无法识别。我确信这只是一种解决方法,我只是想知道是否有一种正确的方法。
<script>
$(document).ready(function () {
var baseUrl = '@HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority)@Url.Content("~/")';
$("a").click(function (e) {
if ($(this).attr("action") == "Edit") {
$("#dlgCode").empty()
.load(baseUrl + "/Codes/Edit?id=" + $(this).attr("code_id") + "×tamp=" + new Date().getTime());
setTimeout(function () {
$("#dlgCode").css("display", "");
$("#dlgCode").dialog({
width: "25%",
maxWidth: "768px",
title: "Edit Code"
});
}, 1000);
} else if ($(this).attr("action") == "Delete") {
$("#dlgCode").empty()
.load(baseUrl + "/Codes/Delete?id=" + $(this).attr("code_id") + "×tamp=" + new Date().getTime());
setTimeout(function () {
$("#dlgCode").css("display", "");
$("#dlgCode").dialog({
width: "25%",
maxWidth: "768px",
title: "Delete Code"
});
}, 1000);
} else if ($(this).attr("action") == "Add") {
$("#dlgCode").empty()
.load(baseUrl + "/Codes/Add?id=" + $(this).attr("group_id") + "×tamp=" + new Date().getTime());
setTimeout(function () {
$("#dlgCode").css("display", "");
$("#dlgCode").dialog({
width: "25%",
maxWidth: "768px",
title: "Add Code"
});
}, 1000);
}
else if ($(this).attr("action") == "Cancel") {
$("#dlgCode").dialog('close');
}
//console.log($("#dlgCode").html());
//alert($(this).attr("code_id"));
});
});
更新:
我尝试从视图中输出端口并重新部署并从外部访问它,但识别的端口是80.
alert('@HttpContext.Current.Request.Url.Port');