2015-08-26 3 views
9

У меня есть готовая версия Visual Studio 2013 SPA с использованием WebApi. Я добавил аутентификацию Twitter в Startup.Auth.cs, и все это прекрасно работает, когда я публикую в корневом каталоге веб-сайта IIS или когда я отлаживаю в VS с localhost.Публикация WebApi в подпапку

То, что я не могу понять, как опубликовать проект в подпапку, как это:

enter image description here

Другими словами, http://localhost/api

Сайт работает сам по себе. Это ReturnUrl из твиттера, который всегда перенаправляет на http://localhost/# Она включает в себя правильный access_token, но в этом формате:

http://localhost/#access_token=fzgSLjF4W0QAHlhsNFZI ...

Если я вручную ввести «апи /» перед #access_token открывает индекс по умолчанию и аутентифицируется через Twitter. Я изменил настройки на стороне Twitter, javascript и .cs. Я просто не могу найти решение, отличное от Publish, на корневом веб-сайте. Я хотел бы опубликовать приложение в подпапке.

Предложения?

+0

Каковы ваши причины, чтобы опубликовать его в _subfolder_? Я бы предложил вам посмотреть виртуальный хост в IIS. –

+0

URL-адрес обратного вызова в твиттере - содержит ли он/api? – Taleeb

+0

есть. Я также пробовал http://127.0.0.1/api – smoore4

ответ

3

После прохождения каждой папки я заметил одну папку, которую я не проверял - Провайдеры. А в нем есть класс ApplicationOAuthProviders.cs. Как только я изменил значения в этом файле, социальные логины начали правильно перенаправлять.

Существует ряд изменений, которые необходимо изменить для публикации в подпапку; они:

  • ApplicationOAuthProvider: context.Request.Uri "/ YourSubfolder /"
  • app.datamodel.js: self.userInfoUrl = "YourSubfolder/меня"; (Удалить первый слэш)
  • app.viewmodel.js: window.location = "/ YourSubfolder/Счет/Авторизоваться client_id = & веб response_type = & маркер состояния =?" + EncodeURIComponent (window.location.hash);
  • WebApiConfig.cs: routeTemplate: "YourSubfolder/{контроллер}/{ID}"
1

Вы пытались добавить виртуальный каталог на веб-сайте IIS?
У меня есть свой API как отдельный проект, и я могу обратиться к нему с помощью следующей подкаталог www.your-web-site/API

Для этого перейдите в контекстное меню IIS -> на своем веб-сайте. Затем:
enter image description here
И добавьте псевдоним (подпапка-имя) и физический путь к вашему проекту API.
Он должен работать

+0

Я пробовал это, но получил сообщение о том, что это должно быть веб-приложение. – smoore4

+0

Попробуйте создать веб-приложение API, включите в него проект WebApi, а затем отправьте виртуальный каталог в веб-приложение API. – Lokki

1

Я пошел через ад с этим, и вот что мне делать, чтобы решить эту проблему:

Когда на Content View просто нажмите на вложенную папку и выберите «Преобразовать в Application». Thats it.

Затем просто нажмите на вновь созданное приложение и нажмите «Обзор», он покажет вам страницу по умолчанию проекта веб-API.

3

См this answer

Используйте Visual Studio "Web Deploy" публикует метод.

Set «Название сайта», чтобы localhost/api вместо localhost

+1

Я собираюсь проверить это. Спасибо за сообщение. – smoore4

+1

omg. Почему это должно быть так проклято? – kumaheiyama

Смежные вопросы