首先提供一些背景信息。我在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 /值,但可以固定。
當然這很簡單,但我不知道需要做什麼。
可能的重複http://stackoverflow.com/questions/9536362/asp-net-web-api-in-web-forms –
我試過了「<模塊runAllManagedModulesForAllRequests =」true「/>」解決方案,它沒有做任何事情。我不認爲他的場景和我的一樣。 –
我相信webapi **的默認路由模板不包含「{action}」。查閱文檔。 –