我正在使用VS 2013和MVC5 要在IIS中托管应用程序,我使用了Properties-> Web - >服务器 - >本地IIS并单击“创建虚拟目录”。 所以这为“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){}); 如果有其他选择,请建议。
答案 0 :(得分:1)
问题是你的javascript只有在应用程序部署在网络服务器(/)的顶层时才有效,因为你使用的是绝对网址。
如果您的javascript是在应用程序的顶层执行的,那么您可以将您的网址更改为相对网址:
@Url.Content("~/api/menuapi/")
但如果您在视图中使用javascript,更好的方法是使用以下方法检索正确的完整网址:
$http.get('@Url.Content("~/api/menuapi/")' + menuid).success(function (data) {});
像:
------------------------------------
| loc_id | item_id | size_id | qty |
------------------------------------
| 5 | 11321 | 1 | 5 |
| 5 | 11321 | 2 | 8 |
| 5 | 11321 | 3 | 4 |
| 5 | 11321 | 2 | 1 |