为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
茅侃侃 2023-07-09 16:35:48
Linqpad 6 支持.Net Core。当我在 Visual Studio 中创建新的空 .Net Core API 解决方案时,我得到一个带有简单演示控制器的简单模板。当我在 Visual Studio 中运行它时,它使用命令行服务器(kestrel)来运行项目:所以我想看看是否可以在 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://localhost:5000/api/valuesdo 得到 acked ,但没有来自控制器的 json 值响应:问题:如何让 Linqpad 从控制器返回值?(一个简单的json)
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

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 包更容易。


查看完整回答
反对 回复 2023-07-09
  • 1 回答
  • 0 关注
  • 118 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信