我熟悉PHP和JS以及MVC方法,但是我对C#完全陌生,并花了一些时间来查找有关此特定错误的文档。
我使用dotnet new mvc
在端口5000上创建了可运行的应用程序。还要注意,我在Controller中工作,而不是模型或视图:
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");
}
}
}
我得到的错误(尝试编译时)是:
error CS1061: 'HttpResponse' does not contain a definition for 'Write' and no accessible extension method 'Write' accepting a first argument of type 'HttpResponse' could be found (are you missing a using directive or an assembly reference?)
如果我缺少using
指令,它是哪一个?我尝试了System.Web
,但没有成功。我该如何进行这项工作?
答案 0 :(得分:1)
我建议按照Microsoft教程中的有关使用asp.net core进行操作。
https://docs.microsoft.com/en-us/aspnet/core/tutorials/first-mvc-app/?view=aspnetcore-2.2
就此特定实例而言,我会这样做而不是使用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";
}
}
}
这个特定的sample可能会有所帮助。
对于此类,URL https://localhost:5001/api/Help_Pdf返回“测试”
答案 1 :(得分:1)
在ASPNET Core中,编写API时,更常见的是返回对象或POCO,而不是直接写入响应流(尽管确实有可能)
尝试更改您的
public void Help_Pdf()
{
Response.Write("test");
}
到
[HttpGet()]
public IActionResult Help_Pdf()
{
return Ok();
}
这将返回204(无内容),但是您可以将数据传递给OK函数,以将正文添加到响应对象。
答案 2 :(得分:0)
如果您尝试像这样直接写入响应流,则可以执行以下操作:
public async Task Help_Pdf()
{
await Response.WriteAsync("Test");
}
但是,我建议您不要在实际的应用程序中执行此操作,该方法应返回IActionResult
。 IMO并不是在控制器方法中直接写入流(不是非常易于测试的)的好习惯。