[英]Asp.Net Core "Web API" Routes Returning 404 Not Found
在具有 Asp.net Core 2 的 Windows 7 Dev 机器上,我们所有返回数据(不是视图)的 API 特定路由都可以工作。
一位开发人员最近在他的新 Windows 10 机器上设置了 API。 当我们在 Postman 或 swagger 中运行路由时,他只能让一个特定的GET
路由工作(额外的花絮-碰巧这是唯一不调用EntityFramework
路由)。
所有其他路由都返回404 Not Found
,就好像这些 URL 不存在一样。 返回404
的不是我们的代码,而是平台本身。
由于服务器返回 404,我们的代码没有被执行,因此也没有有用的日志记录。
我还在 Win server 2016 机器上部署和测试了它,并遇到了完全相同的问题。
我在这台服务器上做的最后一件事是安装 Asp.net Core 2 SDK 但没有效果。
一些代码:
[Produces("application/json")]
[Route("api/v1/Signatures/Request")]
public class SignatureRequestController : ControllerBase
[HttpPost]
[Route("")]
public async Task<SignatureRequestBaseResponse>
CreateSignatureRequestAsync([FromBody]SignatureRequest signatureRequest)
示例 POST 网址:
http://localhost/My.API/api/v1/signatures/request/
示例 json 主体:
{
"clientApplicationInstanceId" : "4318704B-7F90-4CAE-87A9-842F2925FE45",
"facilityId" : "PT",
"contact": "me@my.com",
"documentInstanceGuid" : "cc46c96f-cd78-448e-a376-cb4220d49a52",
"messageType" : "1",
"localeId": 1,
"field":
{
"fieldId": 45,
"signatureType": "4",
"displayName": "Short Display Name from iMed4Web",
"signerNameCaption": "signer name caption",
"signerAddressCaption": "address caption",
"signerCityStateZipCaption": "city state zip caption"
},
"documentPreviewHtml": "too long to show..."
}
您应该将 Route 属性应用于控制器方法(操作),并且您还可以指向与路由关联的 http 动词。 看看他的文档,它会帮助你。
最新的 Core 3.1 Asp.Net Core Web App 模板发生在我身上。 问题是默认的接线是这样的:
app.UseEndpoints(endpoints => {
endpoints.MapRazorPages();
endpoints.MapControllers();
});
但是,它必须是这样的:
app.UseEndpoints(endpoints => {
endpoints.MapRazorPages();
endpoints.MapControllers();
endpoints.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}"
);
});
上一个答案将我引向了解决方案,但我想发布一个更明确的答案,以防对其他人有帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.