首先是一些背景信息。我有一个在VS 2012 Express中创建的Web窗体应用程序形式的工作网站。然后我尝试添加一个Web API,添加一个ASP.NET MVC 4 Web应用程序项目并选择Web API。
所以整个项目现在有三个不同的项目。
(我已经阅读了将API添加到现有项目的教程,但要求在不同的项目中使用Web API。)
为了保持简单,我只使用从一开始就包含的控制器,直到我解决这个问题。
我的问题是,当我尝试运行时,我得到 404 Not Found 错误:
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 }
);
API中的Global.asax如下所示:
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 / values,但这可以修复。
当然,它就像那样简单,但我不知道还需要做什么。
答案 0 :(得分:1)
我用于解决问题的解决方案:
我将API项目上的IIS端口更改为与我的网站项目相同的端口。
API http://localhost:49919/api/
(/ api因为他们不能拥有相同的网址)
链接现在看起来像49919 / api / api / values,但这可以修复。