2012-11-28 48 views
2

我有一個.NET 4.0「Web應用程序」又名「Web窗體」。在這個應用程序裏面我有一個「Web API控制器類」和我的「Global.asax」我在我的「Application_Start」方法中有下面的代碼。發佈後路由不起作用

var config = GlobalConfiguration.Configuration; 

config.Routes.MapHttpRoute(
name: "DefaultApi" 
, routeTemplate: "api/{controller}/{id}" 
, defaults: new { id = System.Web.Http.RouteParameter.Optional }); 

當我開始本地調試會話時,我可以使用我的路由就好了。如果我輸入「/ api/ZipCodes」,我會得到我預期的JSON響應。

當我發佈我的項目,到我的遠程IIS服務器(發佈方法:文件系統)的路線不再起作用。我收到一個404錯誤。

我假設有一個設置或我需要在IIS上啓用它以識別和使用路由。

  • IIS版本7.0.6000.16386
  • .NET應用程序池版本4.0

  • 我的網站駐留在 「C:\的Inetpub \主機」 與7+其他網站,所有的工作一起。沒有使用路由。

  • 我有一個Default.aspx和「Hello World」,我可以在遠程IIS服務器和本地調試會話上正確訪問它。
  • 當我在本地機器上進行調試時,可以輸入「http:// localhost:6358/api/ZipCodes」並獲取我的JSON響應。如果我在遠程機器「http://remoteserver.com/api/ZipCodes」上輸入相同的URL,它會給我一個404.

任何人有什麼想法?

回答

0

您的主文件夾設置是否正確?因爲這就是今天發生在我身上的事情。 它應該指向應用程序的根文件夾,而不是服務器的根目錄。

編輯:你可以給我們你發佈你的應用程序的文件夾?

另外,如果你想知道如何設置「主文件夾」(文件夾服務器點時,請求以IE瀏覽器:www.yoursite.com)看看這個鏈接: https://www.microsoft.com/technet/prodtechnol/WindowsServer2003/Library/IIS/a59a2665-9078-43ef-8b5a-5bf9bcacc95e.mspx?mfr=true

綜上所述:

你必須設置你的「主文件夾」指向應用程序的文件夾,或者把你的應用程序文件預設的文件夾(認爲它的命名是這樣的:LocalDrive:\的Inetpub \ wwwroot的

+0

Que?我不熟悉「主文件夾」。我只是設置了IIS Web應用程序,將其指向我的服務器C:/上的文件夾,然後通過網絡發佈。 –

+0

嘗試輸入sitename作爲「文件夾」,例如:www.example。com/example – Graknol

0

如果你有你的IIS最新的(我假設7.0或更高版本),以及配置的應用程序池到用戶框架4.0,應與任何其他操作或配置一起使用。

+0

IIS 7.0.6000.16386,並且應用程序池設置爲v4.0 –

+0

您在遠程服務器上使用哪種URL?如果您嘗試瀏覽本網站上的其他內容,可以使用它? – Jordi