Linqpad 6(核心)和.Net Core Api?

Linqpad 6 支持.Net Core。
当我在 Visual Studio 中创建新的空 .Net Core API 解决方案时,我得到一个带有简单演示控制器的简单模板。

http://img2.sycdn.imooc.com/64aa717e00013a8f02730188.jpg

当我在 Visual Studio 中运行它时,它使用命令行服务器(kestrel)来运行项目:

http://img3.sycdn.imooc.com/64aa71860001d00106530153.jpg

所以我想看看是否可以在 Linqpad 6 中运行这个项目。

所以我已经安装了所有 nuget 并将代码复制到 Linqpad :

void Main()

{


    CreateWebHostBuilder(new string[] { "" }).Build().Run();


}


public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>

        WebHost.CreateDefaultBuilder(args)

            .UseStartup<Startup>();


[Route("api/[controller]")]

[ApiController]

public class ValuesController : ControllerBase

{


    [HttpGet]

    public ActionResult<IEnumerable<string>> Get()

    {

        return new string[] { "value1", "value2" };

    }


}



public class Startup

{

    public Startup(IConfiguration configuration)

    {

        Configuration = configuration;

    }


    public IConfiguration Configuration { get; }


    // This method gets called by the runtime. Use this method to add services to the container.

    public void ConfigureServices(IServiceCollection services)

    {

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);

    }


    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.

    public void Configure(IApplicationBuilder app, IHostingEnvironment env)

    {

        //if (env.IsDevelopment())

        {

            app.UseDeveloperExceptionPage();

        }


        app.UseMvc();

    }

}

我确实看到它现在正在监听:

http://img2.sycdn.imooc.com/64aa71960001e12f06250178.jpg

但是调用http://localhost:5000/api/valuesdo 得到 acked ,但没有来自控制器的 json 值响应:

http://img2.sycdn.imooc.com/64aa71a00001258504910247.jpg

问题:

如何让 Linqpad 从控制器返回值?(一个简单的json)


茅侃侃
浏览 119回答 1
1回答

慕村9548890

LINQPad 执行代码的方式存在差异,这可能会导致此问题不起作用。作为一个脚本工具,LINQPad 将所有内容包装在一个类中(否则,该Main方法将无处可存)。所以ValuesController实际上最终会成为嵌套类型 ,UserQuery.ValuesController这可能会扰乱路由 API。对于这种情况,LINQPad 能够提取所有嵌套类型并将它们移到 UserQuery 之外(使用 Roslyn API)。要启用此功能,请将以下内容添加到查询的开头:#LINQPad nonest其他需要考虑的事情是默认的 MVC 项目包含一个 appsettings.json 文件。如果 LINQPad 中的代码需要这样做,则需要创建这样一个文件并添加对它的引用(当您引用非二进制文件时,LINQPad 会将其复制到输出文件夹中,这正是 appsettings.json 需要的位置成为)。编辑:“查询属性”对话框中现在有一个复选框,用于将 ASP.NET Core 引用添加到 LINQPad 6 中的查询。这会直接从共享框架文件夹中提取程序集,并且比查找正确的 NuGet 包更容易。
打开App,查看更多内容
随时随地看视频慕课网APP