C# InvalidCastException:无法强制转换类型为';System.Guid';输入';System.String';。在asp.net核心webapi中
您好,我正在asp.net core中创建一个webapi,当我调用控制器时,它会抛出错误,这显示了我如何创建模型和控制器。 型号: 控制器:C# InvalidCastException:无法强制转换类型为';System.Guid';输入';System.String';。在asp.net核心webapi中,c#,asp.net-core,webapi,C#,Asp.net Core,Webapi,您好,我正在asp.net core中创建一个webapi,当我调用控制器时,它会抛出错误,这显示了我如何创建模型和控制器。 型号: 控制器: [Route("api/[controller]")] [ApiController] public class CDProjectController : ControllerBase { private readonly CDDbcontext _context; public CDProjectController(CDDbcon
[Route("api/[controller]")]
[ApiController]
public class CDProjectController : ControllerBase
{
private readonly CDDbcontext _context;
public CDProjectController(CDDbcontext context)
{
_context = context;
}
// GET: api/DCandidate
[HttpGet]
public async Task<ActionResult<IEnumerable<tblProject>>> GetDCandidates()
{
return await _context.tblProject.ToListAsync();
}
// GET: api/DCandidate/5
[HttpGet("{id}")]
public async Task<ActionResult<tblProject>> GetDCandidate(Guid prj_id)
{
var dCandidate = await _context.tblProject.FindAsync(prj_id);
if (dCandidate == null)
{
return NotFound();
}
return dCandidate;
}
[路由(“api/[控制器]”)]
[ApiController]
公共类CDProjectController:ControllerBase
{
私有只读CDDbcontext_context;
公共CDProjectController(CDDbcontext上下文)
{
_上下文=上下文;
}
//获取:api/DCandidate
[HttpGet]
公共异步任务GetDCandidates()
{
return wait_context.tblProject.toListSync();
}
//获取:api/DCandidate/5
[HttpGet(“{id}”)]
公共异步任务GetDCandidate(Guid prj_id)
{
var dCandidate=wait _context.tblProject.FindAsync(prj_id);
如果(dCandidate==null)
{
返回NotFound();
}
返回日期;
}
var dCandidate=await\u context.tblProject.where(p=>p.prj\u id==prj\u id).singleOrdefault();首先需要检查列数据类型varchar或nvarchar中的sql表。在c中之后,方法调用传递guid参数来设置字符串类型
范例
string prj_id=System.Guid.NewGuid().ToString();
var dCandidate=await _context.tblProject.Where(p=>p.prj_id==prj_id).SingleOrDefault();
查看另一个示例
创建MathStudents1表
(
Id UNIQUEIDENTIFIER主键默认NEWID(),
学生名VARCHAR(50)
)
去
插入MathStudents1值(默认值为'Sally')
插入MathStudents1值(默认值为'Edward')在我使用[FromRoute]时发现错误,它正在工作感谢所有人的回答
检查或删除
Null
行这与aspnet/core或webapi无关,与您如何调用我假设的实体框架方法(FindAsync
)有关。该方法不接受Guid,您需要添加一个到字符串
,或者由于键
属性,它应该接受Guid,但上下文未正确配置DHI。哪个方法引发异常,GetCandidates()
,或者GetCandidate(Guid prj\U id)
?对异常的完整堆栈跟踪将非常有用。还请注意,您的参数名称prj_id
与GetDCandidate
方法中的路由路径id
参数不匹配,因此它总是得到空guid值,因此您总是得到NotFound()在此方法中..我无法使用您的代码重现您的问题。您的请求url是什么?您的模型设计是什么?我在请求任何post或get操作时遇到错误。我不知道如何使用GUI执行web api操作。我在调用获取所有数据时遇到错误。公共异步任务GetDCandidates(){return await _context.tblProject.ToListAsync();}
[Route("api/[controller]")]
[ApiController]
public class CDProjectController : ControllerBase
{
private readonly CDDbcontext _context;
public CDProjectController(CDDbcontext context)
{
_context = context;
}
// GET: api/DCandidate
[HttpGet]
public async Task<ActionResult<IEnumerable<tblProject>>> GetDCandidates()
{
return await _context.tblProject.ToListAsync();
}
// GET: api/DCandidate/5
[HttpGet("{id}")]
public async Task<ActionResult<tblProject>> GetDCandidate(Guid prj_id)
{
var dCandidate = await _context.tblProject.FindAsync(prj_id);
if (dCandidate == null)
{
return NotFound();
}
return dCandidate;
}