IIS 虚拟目录创建路径问题

IIS Virtual directory creates path issue

我正在使用 VS 2013 和 MVC5 为了在 IIS 中托管应用程序,我使用了 Properties-> Web ->Servers ->Local IIS 并单击了 Create Virtual directory。 所以这为 "MyPortal"

创建了一个 VD

但是现在我遇到了路径问题

我的应用程序中有一个 api 控制器。 当我使用 VS 开发服务器时,它正在使用 url 访问:localhost:1553/api/menuapi 并且数据被正确访问。

但是一旦托管到 IIS,它就停止工作了。 选中后,它会尝试从 url 获取数据,即: localhost/api/menuapi 并给出 404 错误。

但实际上 api 没问题,可以从 url 访问数据: 本地主机/MyPortal/api/menuapi

为什么以及如何产生这个路径问题? 以下是我如何进行 api 调用: 1. 在 javascript 文件中: $http.get('/api/menuapi/' + menuid).success(function (data) {}); 如果有任何替代方案,请提出建议。

问题是您的 javascript 仅在应用程序部署在网络服务器 (/) 的顶层时才有效,因为您使用的是绝对 url.

如果您的 javascript 在应用程序的顶层执行,您可以将 url 更改为相对的:

$http.get('api/menuapi/' + menuid).success(function (data) {});

但是如果您的 javascript 在一个视图中,更好的方法是使用以下方法检索正确的完整 url:

@Url.Content("~/api/menuapi/")

喜欢:

$http.get('@Url.Content("~/api/menuapi/")' + menuid).success(function (data) {});