簡體   English   中英

ASP.NET WEB API 2本地工作但不在生產Web服務器上

[英]ASP.NET WEB API 2 Works Locally But Not On Production Web Server

我已經開發了一個在本地運行良好的新WEB API 2,但是當我將相同的代碼上傳到我的生產服務器(在這種情況下是Arvixe)時,我得到的就是404。 我花了兩個小時在網上搜索,閱讀論壇等等。並且找不到解決方案,所以我在這里問我最后的努力。

我目前只測試在Visual Studio中執行New Project> ASP.NET Web API 2空項目時創建的默認項目。 這將創建一個帶有單個ValuesController的空項目。 您應該通過調用/api/values來進行JSON響應,但這甚至不起作用。

我正在使用Fiddler在本地和Web服務器上測試API。

http://localhost:1993/api/values    <--- works great

http://api.mydomain.com/api/values   <--- returns 404

注意:在這種情況下我創建了一個子域“api”,但是API的代碼的所有內容都與創建時沒有變化。

為什么世界上這在本地工作,而不是在生產Web服務器上?

服務器返回404(未找到)可能表示很多事情。 但是,您可以使用以下步驟進行檢查:

  1. 將一個簡單的文本文檔(如readme.txt)添加到您的文件夾子域http://api.mydomain.com ,並嘗試訪問它。 如果您無法訪問該文件,則表示未正確配置子域。

  2. 使用“發布”功能發布Web服務,以便復制所有DLL。

之后,嘗試再次訪問Web ApI。

希望有所幫助。

“注意:在這種情況下我創建了一個子域'api',但是API的代碼的所有內容都與創建它時沒有變化。”

您的上述評論是可疑的,您應該在根目錄中發布您的WEB API應用程序。 就像http://example.com指向“MyExample”文件夾一樣,應用程序應該發布在“MyExample”文件夾中。 之后,您將可以通過http://example.com/api/ {controller} / {action}訪問您的API

只是一個簡單的建議,我相信你已經考慮過,但是你在服務器的防火牆上打開了http端口80嗎?

還要在項目的根目錄中粘貼一個普通的舊html文件,看看服務器是否提供了它。

在您的情況下,因為您創建了'api'的子域,您應該嘗試

http://api.mydomain.com/api/api/values

請注意,如果您正在為該函數使用數據庫,則應更改Web配置中的connectionString

請驗證您托管域上可能是舊域的.net框架。

  • Web api 2應該是4.5框架。

Web api 2方法在本地計算機上正常工作但在生產服務器上工作正常的一個原因是您調用的方法是在本地計算機上工作,而不是在遠程服務器上工作。 在這種情況下,您將收到消息404或500,並且您將丟失為什么此路由失敗。 為什么一個方法會在遠程服務器上失敗,原因可能有很多。 對我來說,我在我的方法中查詢數據庫,而我的connectionString沒有為遠程服務器設置。 解決它的一種方法是在該特定方法中放入一些非常簡單的代碼並測試路由是否正常工作。 然后檢查原始代碼是否有錯誤原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM