【发布时间】:2014-02-23 00:52:07
【问题描述】:
首先是一些背景信息。我有一个在 VS 2012 Express 中创建的 Web 表单应用程序形式的工作网站。然后我尝试添加一个 Web API,方法是添加一个 ASP.NET MVC 4 Web 应用程序项目并选择 Web API。
所以整个项目现在有三个不同的项目。
- DAL(数据访问层)
- Web 表单应用程序
- 网络 API
(我已经阅读了将 API 添加到现有项目的教程,但需要在不同的项目中使用 Web API。)
为了简单起见,我只使用从一开始就包含的控制器,直到我解决这个问题。
我的问题是当我尝试运行时遇到 404 Not Found 错误,例如:
http://localhost:49919/api/Values
现在我猜这是因为我试图从我的站点访问 API,这是另一个项目。但即使在网上寻找几个小时的解决方案后,我也找不到任何可以解决我问题的东西。我发现有些人有同样的问题,但他们的解决方案对我不起作用。
到目前为止我尝试过的事情是:
在 Site 项目中添加了对 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/
APIhttp://localhost:49919/api/(/api because they can't have the same url)
链接现在看起来像这样 49919/api/api/values,但可以修复。
当然就是这么简单,但我不知道需要这样做。
【问题讨论】:
-
我已经尝试了“
”解决方案,但它没有做任何事情。我不认为他的情况和我的一样。 -
我相信 webapi 的默认路由模板不包含
{action}。查阅文档。 -
你说得对,我一开始就改了。其中一个包含的 URL 将如下所示,localhost:49919/api/Values/GET/5。 {action} 用于声明例如 GET。不幸的是,将它改回来并没有做任何事情,因为即使尝试访问 api/Values 也会出现我的错误。
-
@LuisGouveia 是的,就像我在编辑中写的那样,我在 api 项目的设置中更改了 IIS 端口,因此它与主项目相同。这为我解决了它。抱歉这么久才回复,之前没看到你的帖子。祝你好运!
标签: asp.net api webforms asp.net-web-api