2015-08-26 14 views
9

Ich habe eine Out-of-the-Box Visual Studio 2013 SPA mit WebApi. Ich habe Twitter-Authentifizierung zu Startup.Auth.cs hinzugefügt und alles funktioniert gut, wenn ich im Stamm einer IIS-Website veröffentlichen, oder wenn ich in VS mit localhost debuggen.Veröffentlichen WebApi in Unterordner

Was kann ich nicht herausfinden, wie man das Projekt in einen Unterordner wie folgt veröffentlichen:

enter image description here

Mit anderen Worten, http://localhost/api

Die Seite selbst funktioniert. Es ist die ReturnUrl von Twitter, die immer zu http://localhost/# leitet es die richtigen access_token enthält aber in diesem Format:

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

Wenn ich geben „api /“ manuell vor #access_token es öffnet den Standard-Index Seite und wird über Twitter authentifiziert. Ich habe jede Einstellung auf der Twitter-Seite, Javascript und .cs. Ich kann einfach keine andere Lösung als Veröffentlichen auf einer Stammwebsite finden. Ich möchte in einer Unterordner-Anwendung veröffentlichen.

Vorschläge?

+0

Was Ihre Gründe es in einem _subfolder_ zu veröffentlichen sind? Ich würde vorschlagen, dass Sie Virtual Host in IIS betrachten. –

+0

Die Callback-URL in Twitter - enthält es/API? – Taleeb

+0

ja tut es. Ich habe auch versucht http://127.0.0.1/api – smoore4

Antwort

3

Nachdem ich durch jeden Ordner gegangen bin, habe ich einen Ordner bemerkt, den ich nicht überprüft habe - Anbieter. Und da ist eine Klasse namens ApplicationOAuthProviders.cs. Sobald ich die Werte in dieser Datei geändert hatte, begannen soziale Logins korrekt umzuleiten.

Es gibt eine Reihe von Änderungen, die geändert werden müssen, um sie in einem Unterordner zu veröffentlichen. sie sind:

  • ApplicationOAuthProvider: context.Request.Uri "/ YourSubfolder /"
  • app.datamodel.js: self.userInfoUrl = "YourSubfolder/me"; (Entfernen ersten Schrägstrich)
  • app.viewmodel.js: window.location = "/ YourSubfolder/Account/Autorisieren client_id = web & response_type = Token & Zustand =" + encodeURIComponent (window.location.hash);
  • WebApiConfig.cs: routeTemplate: "YourSubfolder/{Controller}/{id}"
1

Haben Sie das virtuelle Verzeichnis in Ihrer IIS-Website hinzugefügt versucht?
Ich habe meine API als separates Projekt und ich kann darauf verweisen, indem Sie www.your-web-site/API-Unterordner

Um es zu tun gehen Sie zu Ihrem IIS -> Kontextmenü auf Ihrer Website. Dann:
enter image description here
Und fügen Sie Ihrem API-Projekt Alias ​​(subfoldername) und physischen Pfad hinzu.
Es sollte

arbeiten mit diesem
+0

Ich habe versucht, aber bekam einen Fehler, der sagt, dass es eine Webanwendung sein musste. – smoore4

+0

Versuchen Sie, eine API-Webanwendung zu erstellen, schließen Sie Ihr WebApi-Projekt darin ein und verweisen Sie dann das virtuelle Verzeichnis auf Ihre API-Webanwendung. – Lokki

1

ich durch die Hölle gegangen und hier ist das, was ich dieses Problem zu beheben tun:

Wenn auf Seiten auf den Unterordner klicken Sie einfach auf und wählen Sie „To Anwendung Konvertieren“. Das ist es.

Dann klicken Sie einfach auf die neu erstellte Anwendung und klicken Sie auf Durchsuchen, es zeigt Ihnen die Standardseite des Web-API-Projekts.

3

Siehe this answer

Verwenden Sie das Visual Studio "Web Deploy" Methode veröffentlichen.

Set "Site-Name" zu localhost/api statt localhost

+1

Ich werde das testen. Danke für deinen Beitrag. – smoore4

+1

omg. Warum musste es so verdammt einfach sein? – kumaheiyama