您是jquery mobile和web api的新手,我目前正在开发一个同时使用这两者的项目。我已经在我的IIS7中托管了应用程序我无法访问我的控制器的问题,当我尝试这样做时,我总是得到404错误。在我的开发机器上它工作正常。我已经查看了堆栈上的一些答案,而不是它们似乎正在工作。任何帮助PLZ
见下面的代码
WebApiConfig.cs
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
我的控制器
public class ManufacturerController : ApiController
{
private List<Manufacturer> manufacturers = new List<Manufacturer>();
public ManufacturerController()
{
manufacturers.Add(new Manufacturer(1, "AUDI"));
manufacturers.Add(new Manufacturer(2, "BMW"));
manufacturers.Add(new Manufacturer(3, "MAZDA"));
manufacturers.Add(new Manufacturer(4, "NISSAN"));
manufacturers.Add(new Manufacturer(5, "FORD"));
}
public IEnumerable<Manufacturer> GetManufacturers(string manufacturerSearch)
{
var _products = manufacturers.Where(p => p.Name.Contains(manufacturerSearch.ToUpper()));
return _products;
}
我的Jquery移动自动填充代码
(document).on("pageinit", function () {
//manufacturer search
$("#manufacturer").on("listviewbeforefilter", function (e, data) {
var $ul = $(this),
$input = $(data.input),
value = $input.val(),
html = "";
$ul.html("");
if (value && value.length > 0) {
$ul.listview("refresh");
$.ajax({
beforeSend: function() {
$ul.html('<h4>Loading...</h4>');
},
url: "http://my_server/api/manufacturer/?manufacturerSearch=" + value,
//timeout: 3000,
dataType: "jsonp",
crossDomain: true,
data: {
q: $input.val()
},
error: function (xhr, errorType) {
//if (errorType === "error") {
//showError(xhr.status, xhr.statusText);
//$input.val("");
alert("Error: " + xhr.status + "," + xhr.statusText);
//}
}
})
.then(function (response) {
$.each(response, function (i, val) {
html += "<li id='" + val.Id + "'>" + val.Name + "</li>";
});
$ul.html(html);
$ul.listview("refresh");
$ul.trigger("updatelayout");
$ul.find('li').on("click", function () {
$input.val($(this).text());
selectedManufacturerId = getId(this);
$("#manufacturer").empty();
});
});
}
});
提前致谢
答案 0 :(得分:1)
使用Visual Studio,您通常会使用这样的URI - http://localhost:<port>/api/manufacturer
。在IIS中部署它时,删除端口和更改主机名是不够的。您将在IIS中将应用程序部署为应用程序。这通常是您的项目名称。因此,正确的URI将为http://myserver/myapp/api/manufacturer
。