【问题标题】:Setting project url in VS2015 ASP.NET 5 Web API application在 VS2015 ASP.NET 5 Web API 应用程序中设置项目 url
【发布时间】:2015-12-01 12:02:46
【问题描述】:

我正在尝试创建一个 Web API 项目和一个客户端 Web 项目,其中 Web 项目可以通过 ajax 访问 API。目前我的项目是这样的:


我在这里看到了这个答案:Setting app a separate Web API project and ASP.NET app,它解释了如何将项目 url 设置为 localhost:[port]/api

但对于 ASP.NET 5 项目,属性只有 3 个选项卡(与 ASP.NET 4 项目中的几个选项卡相反):


我想知道的是:

  • 我必须在其他地方设置此选项吗? (即 project.json)
  • 当我发布时这将如何工作?理想情况下,我希望 [websiteURL]/api 提供我的 API,而该链接明确放置 localhost:8080。
  • 将这两个项目作为一个好主意吗?我可以轻松地将 API 和 Web 放在同一个项目中,但我喜欢客户端和服务器端逻辑的分离。

任何帮助将不胜感激!

【问题讨论】:

    标签: asp.net asp.net-mvc api asp.net-web-api asp.net-core


    【解决方案1】:

    第一点:

    一般来说,在 ASP.NET 5 中,路由默认值非常好,应该可以开箱即用,无需太多配置。您可以在您的应用程序中使用基于配置和/或属性的路由(对here都有详细的概述),尽管我个人更喜欢属性方法。前提是您的 Startup.cs 文件中包含以下行(您应该在新项目中包含该行):

    app.UseMvc(); 
    

    您应该能够以所需的方式(即“/api/...”)将请求路由到您的 api 控制器,只需使用如下 [Route] 属性(示例取自标准生成的 ASP.NET 5 Web API 应用)

        [Route("api/[controller]")]
        public class ValuesController : Controller
        {
            [HttpGet]
            public IEnumerable<string> Get()
            {
                return new string[] { "value1", "value2" };
            }
        }
    

    上面的例子会将任何 GET 请求路由到“/api/values”。

    虽然此方法可用于处理向您的 api 发出的请求,但为了交付前端 javascript 应用程序/单页应用程序所需的文件,您需要启用静态文件服务。如果在 Startup.cs 类的 Configure 方法中添加以下内容:

    app.UseStaticFiles();
    

    这将允许您的应用程序提供这些静态文件 - 默认情况下,这些文件来自“wwwroot”文件夹,但如果需要,可以在 project.json 文件中进行更改。然后应将前端应用程序所需的文件添加到此文件夹中。提供静态文件的教程可以found here

    第二点:

    根据我的经验,当您发布网站时这不会成为问题 - 只要您的服务器设置正确,您在发出请求时就不需要包含端口 - 导航到 [yourwebsitename]/api/...就够了。

    第三点:

    在我看来,这完全取决于项目可能增长到多大,尽管偏好和意见会因开发人员而异。一般来说,如果项目的范围仍然很小,那么将两者都放在一个项目中是完全可以的,因为减少了不必要的复杂性。但是,正如您所指出的,保持项目之间的关注点分离也非常有用。因此,除了您的方法的组织优势之外,两个项目的各自依赖关系也将/将保持分开。

    【讨论】:

      猜你喜欢
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-07
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 2017-08-11
      相关资源
      最近更新 更多