C#响应。来自脚手架的写入错误“;dotnet新mvc“;

C#响应。来自脚手架的写入错误“;dotnet新mvc“;,c#,model-view-controller,C#,Model View Controller,我熟悉PHP和JS,以及MVC方法,但我对C#完全陌生,并且花了时间寻找关于这个特定错误的文档 我使用dotnetnewmvc在端口5000上创建了一个可用的应用程序。还要注意,我在控制器中工作,而不是在模型或视图中: using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading.Tasks; using Microsoft.A

我熟悉PHP和JS,以及MVC方法,但我对C#完全陌生,并且花了时间寻找关于这个特定错误的文档

我使用
dotnetnewmvc
在端口5000上创建了一个可用的应用程序。还要注意,我在控制器中工作,而不是在模型或视图中:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using ExelonPrime.Models;

namespace OptimusPrime.Controllers{
    public class ApiController : Controller
    {
        public void Help_Pdf()
        {
            Response.Write("test");
        }
    }
}
我(试图编译时)得到的错误是:


如果我缺少使用指令的
,它是哪一个?我尝试了
System.Web
,但没有成功。我怎样才能做到这一点呢?

我建议您阅读微软关于使用asp.net内核的教程

对于这个特定的实例,我会这样做,而不是使用
Response.Write

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using SampleWeb.Models;

namespace SampleWeb.Controllers
{
    public class ApiController : Controller
    {
        [HttpGet]
        public ActionResult<string> Help_Pdf()
        {
            return "test";
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统诊断;
使用System.Linq;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Mvc;
使用SampleWeb.Models;
命名空间SampleWeb.Controllers
{
公共类ApiController:控制器
{
[HttpGet]
公共行动结果帮助_Pdf()
{
返回“测试”;
}
}
}
这一具体做法可能会有所帮助


在这个类中,url返回“test”

,我建议您在Microsoft的asp.net核心使用教程中进行以下操作

对于这个特定的实例,我会这样做,而不是使用
Response.Write

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc;
using SampleWeb.Models;

namespace SampleWeb.Controllers
{
    public class ApiController : Controller
    {
        [HttpGet]
        public ActionResult<string> Help_Pdf()
        {
            return "test";
        }
    }
}
使用系统;
使用System.Collections.Generic;
使用系统诊断;
使用System.Linq;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Mvc;
使用SampleWeb.Models;
命名空间SampleWeb.Controllers
{
公共类ApiController:控制器
{
[HttpGet]
公共行动结果帮助_Pdf()
{
返回“测试”;
}
}
}
这一具体做法可能会有所帮助


在这个类中,url在ASPNET Core中返回“test”

,在编写API时,更常见的是返回一个对象或POCO,而不是直接写入响应流(尽管这确实是可能的)

试着改变你的习惯

public void Help_Pdf()
{
    Response.Write("test");
}


这将返回一个204(无内容),但是您可以将数据传递到OK函数,以向响应对象添加一个主体。

在ASPNET Core中,在编写API时,更常见的是返回一个对象或POCO,而不是直接写入响应流(尽管这确实是可能的)

试着改变你的习惯

public void Help_Pdf()
{
    Response.Write("test");
}


这将返回一个204(无内容),但是您可以将数据传递到OK函数,以将正文添加到响应对象。

如果您试图这样直接写入响应流,您可以执行以下操作:

public async Task Help_Pdf()
{
    await Response.WriteAsync("Test");
}

但是,我建议不要在实际应用程序中执行此操作,该方法应返回
IActionResult
。在我看来,在控制器方法中直接写入流不是一种很好的做法(测试不太友好)。

如果您试图这样直接写入响应流,您可以这样做:

public async Task Help_Pdf()
{
    await Response.WriteAsync("Test");
}

但是,我建议不要在实际应用程序中执行此操作,该方法应返回
IActionResult
。在我看来,在控制器方法中直接写入流不是一种好的做法(不太适合测试)。

编写的代码返回此错误:
错误CS0308:非泛型类型“IActionResult”不能与类型参数一起使用
。尝试在链接中的方法上方添加
[HttpGet]
没有任何效果。很抱歉,您想要的是ActionResult,而不是IActionResult(不存在),更新了答案@Oliverwilliamssory,具有
[HttpGet]
,或
[HttpGet]
,或任何高于该方法的内容将返回404。而且它仍然没有输出字符串“test”您使用什么url来尝试访问您的端点@OliverWilliams我将用完整的类更新我的答案您编写的代码返回此错误:
错误CS0308:非泛型类型“IActionResult”不能与类型参数一起使用
。尝试在链接中的方法上方添加
[HttpGet]
没有任何效果。很抱歉,您想要的是ActionResult,而不是IActionResult(不存在),更新了答案@Oliverwilliamssory,具有
[HttpGet]
,或
[HttpGet]
,或任何高于该方法的内容将返回404。而且它仍然没有输出字符串“test”您使用什么url来尝试访问您的端点@OliverWilliams我要用全班更新我的答案对不起,这不起作用。返回
Ok()。添加字符串
Ok(“test”)
不会添加内容。如果我在上面添加您的
[HttpGet]
行,我只返回404实际上返回200,这种行为是故意的:我刚才回答说海报上说它将返回204。没有。而且,在
Ok()
中添加
“test”
无效对不起,这不起作用。返回
Ok()。添加字符串
Ok(“test”)
不会添加内容。如果我在上面添加您的
[HttpGet]
行,我只返回404实际上返回200,这种行为是故意的:我刚才回答说海报上说它将返回204。没有。并且,在
Ok()
中添加
“test”
在我尝试构建时没有任何效果:
错误CS1061:“HttpResponse”不包含“WriteAsync”的定义,并且找不到可访问的扩展方法“WriteAsync”,该方法接受“HttpResponse”类型的第一个参数(是否缺少using指令或程序集引用?
是否使用Visual Studio?它应该可以告诉您是否缺少任何使用
语句的
。WriteAsync下面是否有一条曲线?如果没有,请尝试使用Microsoft.AspNetCore.Http添加
;当我尝试生成时,
结果: