Веб-API отсутствует при развертывании

#c# #rest #asp.net-web-api

#c# #rest #asp.net-web-api

Вопрос:

Итак, у меня есть веб-API C # MVC и веб-приложение, представляющее собой проект «все в одном». Я создавал что-то похожее на это в прошлом, но веб-приложение и веб-API были двумя разными проектами с двумя разными URL.

Например:

Веб-приложение будет размещено на mywebsite.com/webapp

Веб-API будет размещен на mywebsite.com/webapi

Каждый раз, когда я хотел вызвать веб-API из веб-приложения, все, что мне нужно было сделать, это отправить Ajax-запрос, используя URL mywebsite.com/webapi/api/getdata

Однако в моем текущем проекте это «все в одном». Поэтому при тестировании я бы просто вызвал /api/getdata , и это отлично работало бы в Visual Studio debug. Но когда я развертываю этот сайт для тестирования и фактически размещаю его, все мои вызовы API сталкиваются с ошибками HTTP 404.

Итак, как мне вызвать веб-API, если у веб-API нет собственного отдельного URL?

Комментарии:

1. Как вы генерируете URL-адреса в своих вызовах ajax?

2. При тестировании это так: xmlhttp.open(«GET», ‘/api/Users/getUser? Имя пользователя=’ username, false);

3. Вы размещаете его в папке? Или корневой каталог вашего доменного имени?

4. Он находится в папке. Это то, чего мне не хватало. Я настроил его на вызов /ProjectFolder /api/Users /getUser, и это сработало. 🙂

Ответ №1:

В IIS я преобразовал папку в приложение, а затем убедился, что переключил вызовы из

 mywebsite.com/api/getdata
  

Для

 mywebsite.com/myproject/api/getdata
  

и сейчас он работает.

Спасибо @mxmissile за указание на это.