2015-08-26 84 views
9

我有一個使用WebApi的開箱即用Visual Studio 2013 SPA。我將Twitter身份驗證添加到了Startup.Auth.cs,並且當我發佈到IIS網站的根目錄或當我在VS中使用本地主機進行調試時,它的所有工作都很好。將WebApi發佈到子文件夾

我想不通的是如何將項目發佈到這樣的子文件夾:

enter image description here

換句話說,http://localhost/api

網站本身的工作原理。它是從Twitter的RETURNURL總是重定向到http://localhost/#它包括正確的,但的access_token這種格式:

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

如果我手動鍵入「API /」它會打開默認的指數#access_token前頁面,並通過Twitter進行身份驗證。我已經調整了Twitter端的所有設置,javascript和.cs。我找不到發佈到根網站的解決方案。我想發佈到子文件夾應用程序。

對此提出建議?

+0

你有什麼理由將其發佈在_subfolder_?我建議你看看IIS中的虛擬主機。 –

+0

twitter中的回調網址 - 是否包含/ 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/{}控制器/(編號)」
1

您是否嘗試過在你的IIS站點添加虛擬目錄?
我有我的API作爲單獨的項目,我可以通過使用www.your-web-site/API子文件夾來引用它

要做到這一點去你的網站上的IIS - >上下文菜單。然後:
enter image description here
併爲您的API項目添加別名(子文件夾名)和物理路徑。
它應該工作

+0

我試過,但有一個錯誤,說它需要成爲一個Web應用程序。 – smoore4

+0

嘗試創建API Web應用程序,在其中包含WebApi項目,然後將虛擬目錄引用到您的API Web應用程序。 – Lokki

1

我去通這個地獄,這裏是我做什麼來解決這個問題:

內容的瀏覽只需點擊子文件夾,並選擇「轉換爲應用程序」。就是這樣。

然後只需點擊新創建的應用程序,點擊瀏覽,它會顯示Web API項目的默認頁面。

3

this answer

使用Visual Studio 「Web部署」 發佈方法。

集「網站名稱」,以 localhost/api而不是localhost

+1

我要測試這個。感謝您的發佈。 – smoore4

+1

omg。爲什麼它必須如此簡單? – kumaheiyama

相關問題