gpt4 book ai didi

jquery - AJAX getJSON 调用适用于 IIS Express,但不适用于 IIS (ASP.NET/MVC4)

转载 作者:行者123 更新时间:2023-12-01 07:17:05 39 4
gpt4 key购买 nike

它找到刚刚通过 IIS Express 找到的 MVC Controller 。但是一旦我切换到 IIS 并进行此调用,它就无法找到资源 (404)

“/api/Values/5”正确吗?或者必须以不同的方式在 IIS 和 IIS Express 中工作?

如果我在 IIS 中运行并输入 URL

http://localhost/AGS.Web/api/values/5

没问题就找到了

var RefreshInstructions = function () {
var SelectedTaskValue = $("#SelectedTaskType_Id").val();
// Send an AJAX request
$.getJSON("/api/Values/5", function (data) {
$('#divTaskInstructions').html(data);
});
}

Key Value
Request GET /api/Values/5 HTTP/1.1

编辑 1:当我使用 IIS EXPRESS 时,它不会被称为 AGS.Web,所以我希望有一种通用的方法来引用这两种情况的 URL?

编辑2:导航到http://localhost/AGS.Web/api/values/5可以找到,但我猜问题是“AGS.Web”在AJAX调用中不存在..那么我应该在前面添加某种服务器变量,例如 HttpContext.Current.Request.Url; ?

最佳答案

如果您将应用程序部署到 IIS,您的 URI 还必须包含您的应用程序名称。因此,由于您的应用程序名称是 AGS.Web,因此您的 URI 必须是 http://localhost/AGS.Web/api/valueues/5

您可以自动检测您的 baseUri 并通过在母版页或共享 _Layout.cshtml 中添加一行来将其添加到前面:

    <script type="text/javascript">
var config = {
contextPath: '@Url.Content("~")'
}
</script>

然后在你的 JS 中添加:

var baseUri = config.contextPath;

$.getJSON(baseUri + "api/values/5", function (data) {
$('#divTaskInstructions').html(data);
});

我从讨论中得到这个javascript-in-virtual-directory-unaware-of-virtual-directory我在本周的部署过程中遇到了同样的问题。

关于jquery - AJAX getJSON 调用适用于 IIS Express,但不适用于 IIS (ASP.NET/MVC4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17710722/

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