首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linqpad 6(核心)和.Net核心Api?

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

Stack Overflow用户
提问于 2019-07-22 15:25:36
回答 1查看 1.4K关注 0票数 1

Linqpad 6支持.Net核心。

当我在visual中创建一个新的空.Net Core解决方案时,我会得到一个简单的模板和一个简单的演示控制器。

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

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

因此,我安装了所有的nuget并将代码复制到Linqpad:

https://i.stack.imgur.com/lwRyU.png

代码语言:javascript
复制
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://localhost:5000/api/values的调用确实会被添加,但是没有来自控制器的json值响应:

问题:

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-23 08:23:12

LINQPad执行代码的方式存在差异,这可能是导致这种不工作的原因。

作为一个脚本工具,LINQPad将所有内容封装在一个类中(否则,Main方法就无处可住)。因此,ValuesController实际上是一个嵌套类型,UserQuery.ValuesController,这可能会破坏路由API。

对于这种情况,LINQPad能够提取所有嵌套类型并将它们移出UserQuery之外(使用Roslyn )。若要启用此功能,请在查询开始时添加以下内容:

代码语言:javascript
复制
#LINQPad nonest

另外要考虑的是,默认的MVC项目包括一个appsettings.json文件。如果LINQPad中的代码需要这样做,您需要创建这样的文件并添加对它的引用(当您引用一个非二进制文件时,LINQPad会将它复制到输出文件夹中,这正是appsettings.json需要的位置)。

编辑:现在有个复选框查询属性对话框中将ASP.NET核心引用添加到LINQPad 6中的查询中。这将直接从共享框架文件夹中提取程序集,并且比找到正确的NuGet包更容易。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57149186

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档