在.NET.Core上对VS代码中的一个非常简单的WebApi进行故障排除

时间:2016-11-21 20:11:41

标签: c# asp.net-web-api asp.net-core visual-studio-code

我有一个工作网页(前端严格),我很好奇我可以在不离开VS代码的情况下添加WebApi。所以我在项目的根目录中创建了一个名为 webapi 的目录,并添加了一个包含以下内容的文件 demo.cs

using Microsoft.AspNetCore.Mvc;
namespace WebApi
{
  [Route("api/[controller]")]
  public class Demo : Controller
  {
    [HttpGet] public string Ping() { return "yo!"; }
  }
}

在参考googlearching之后,我确保我的 project.json 包含以下内容。

"Microsoft.AspNetCore.Server.Kestrel": "1.0.1",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.AspNetCore.Mvc.Core": "1.0.1",

我还编辑了这样的配置方法。

public void ConfigureServices(IServiceCollection services)
{
  services.AddMvcCore();
  services.AddDirectoryBrowser();
}

public void Configure(IApplicationBuilder app, 
  IHostingEnvironment env, ILoggerFactory loggerFactory)
{
  loggerFactory.AddConsole();

  if (env.IsDevelopment())
    app.UseDeveloperExceptionPage();

  app.UseMvc();
  app.UseDefaultFiles();
  app.UseStaticFiles();
  app.UseFileServer(true);
  app.UseMvcWithDefaultRoute();
}

现在,当我使用 dotnet run 执行项目时,我没有错误,页面功能但我似乎无法访问我打算公开的文本。额外的问题是我不确定我是否运行了WebApi但是使用了错误的URL(我使用 / api / donkey localhost:port )或者它根本没有运行。

我如何验证它是否已启动?地址是什么?我在设置中还缺少其他东西吗?

指南讲述了一些不同的东西,我想这取决于NET.Core的快速发展。不知道如何继续。

1 个答案:

答案 0 :(得分:1)

使用

中的文档

Routing to Controller Actions

  

要使属性路由重复性较低,请在路径上布置属性   控制器与个人的路线属性相结合   动作。控制器上定义的任何路径模板都是前置的   在动作上路由模板。在路径上放置路线属性   controller使控制器中的所有操作都使用属性路由。

using Microsoft.AspNetCore.Mvc;
namespace WebApi {    
    [Route("api/[controller]")]
    public class Demo : Controller {    
        [HttpGet] // Matches 'GET /api/Demo'
        public string Ping() { 
            return "yo!"; 
        }
    }
}

启动应该在配置服务中具有此功能

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services) {
    // Add framework services.
    services.AddMvc();
    //...other code
}