2014-01-30 27 views
2

首先提供一些背景信息。我在VS 2012 Express中創建了一個Web表單應用程序的工作網站。然後我嘗試添加一個Web API,通過添加一個ASP.NET MVC 4 Web應用程序項目並選擇Web API。將Web API添加到現有的ASP.NET Web窗體應用程序時的問題

因此整個項目現在有三個不同的項目。

  • DAL(數據訪問層)
  • Web窗體應用程序
  • 的Web API

(我已經閱讀教程添加API到現有的項目,但其在Web API一個不同的項目是一個要求。)

爲了保持簡單我只使用從開始包含的控制器,直到我解決這個問題。

我的問題是,我得到404未找到錯誤,當我嘗試例如運行:

http://localhost:49919/api/Values 

現在,我想這是因爲我試圖訪問我的網站的API,它是另一種項目。但即使在網上尋找解決方案的幾個小時後,我也找不到解決我的問題的任何事情。我發現一些人有同樣的問題,但他們的解決方案並不適合我。

到目前爲止,我已經嘗試過的事情是:

  • 加入到網站的項目API的參考。

  • 將此代碼添加到API Web.Config。如果正確理解,應該允許項目之間的訪問。

    <system.webServer> 
    <httpProtocol> 
        <customHeaders> 
        <clear/> 
        <add name="Access-Control-Allow-Origin" value="*" /> 
        <add name="Access-Control-Allow-Headers" value="Content-Type" /> 
        <add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" /> 
        </customHeaders > 
    </httpProtocol > 
    </system.webServer > 
    

我在WebApiConfig路由看起來是這樣的:

public static void Register(HttpConfiguration config) 
     { 
       config.Routes.MapHttpRoute(
       name: "DefaultApi", 
       routeTemplate: "api/{controller}/{action}/{id}", 
       defaults: new { id = RouteParameter.Optional } 
      ); 

的Global.asax在API中是這樣的:

protected void Application_Start() 
     { 
      AreaRegistration.RegisterAllAreas(); 

      WebApiConfig.Register(GlobalConfiguration.Configuration); 
      FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); 
      RouteConfig.RegisterRoutes(RouteTable.Routes); 
      BundleConfig.RegisterBundles(BundleTable.Bundles); 
     } 

我試圖使一個全新的項目只需一個Web API,而且不需要任何編輯。

這是我第一次使用Web API,所以我非常感謝所有的幫助。

編輯:以爲我會添加API的目的。我將使用它從DAL獲取最新消息,並在網站上用jQuery/AJAX顯示它。

Edit2:將API上的IIS端口更改爲與我的網站相同的端口。

網站http://localhost:49919/

API http://localhost:49919/api/(/api because they can't have the same url)

的聯繫看現在這個樣子49919/API/API /值,但可以固定。

當然這很簡單,但我不知道需要做什麼。

+0

可能的重複http://stackoverflow.com/questions/9536362/asp-net-web-api-in-web-forms –

+1

我試過了「<模塊runAllManagedModulesForAllRequests =」true「/>」解決方案,它沒有做任何事情。我不認爲他的場景和我的一樣。 –

+0

我相信webapi **的默認路由模板不包含「{action}」。查閱文檔。 –

回答

1

,我用我的問題的解決方案:

我改變了IIS端口上的API項目的同一個我的網站項目。

網站http://localhost:49919/

API http://localhost:49919/api/

(/ API,因爲他們不能有相同的URL)

的聯繫看現在這個樣子49919/API/API /值,但可以被修復。

相關問題