无法调用IIS上注册的Web API
本文关键字:Web API 注册 调用 IIS | 更新日期: 2023-09-27 18:18:09
我创建了一个Web API,它返回一个简单类型Product的列表。控制器为:
Product[] products = new Product[]
{
new Product { Id = 1, Name = "Rice", Category = "Groceries", Price = 1 },
new Product { Id = 2, Name = "Dress", Category = "Clothes", Price = 3.75M },
new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M }
};
public IEnumerable<Product> GetAllProducts()
{
return products;
}
当我从同一解决方案中的页面调用时,API正在工作,将web API称为' API/products'
<script type="text/javascript">
var uri = 'api/products';
$(document).ready(function () {
$.getJSON(uri)
.done(function (data) {
$.each(data, function (key, item) {
$('<li>', { text: formatItem(item) }).appendTo($('#products'));
});
});
});
但是当我在IIS服务器上注册API时,url 'http://localhost:8290/api/products'并在客户端应用程序中使用类似的ajax调用API。
<script type="text/JavaScript">
var uri = "http://localhost:8290/api/products";
$(document).ready(function () {
$.getJSON(uri)
.done(function (data) {
$.each(data, function (key, item) {
$('<li>', { text: formatItem(item) }).appendTo($('#products'));
});
})
.fail(function (jqXHR, textStatus, err) {
$('#product').text('Error: ' + err);
});
});
其他restful api以类似的方式工作得很好。我不知道我在这里错过了什么。任何帮助都会很感激。问候。
看来问题出在url
var uri = "http://localhost:8290/api/products";
托管在IIS中,所以url中的虚拟目录名丢失。它应该是这样的:
var uri = "http://localhost/YourVirtualDirectory/api/products";