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) {});
我正在使用 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) {});