删除未被击中的路线

时间:2017-01-04 18:37:55

标签: asp.net-core asp.net-mvc-routing asp.net-core-mvc azure-service-fabric asp.net-core-1.0

为了解决这个问题已经太久了,现在是时候寻求帮助了。我的.net核心mvc应用程序的删除路由未被命中。所有其他路线(Get,Post)都很好。启动时的路由配置如下所示:

    app.UseMvc(routes =>
    {
        routes.MapRoute(
            name: "default",
            template: "{controller}/{action}/{id?}");
    });

表单提交看起来像这样:

    <a class="btn btn-primary" href="~/DisabledRegistrations/Delete/@(Model.Id)">Confirm</a>

控制器方法如下所示:

[Authorize]
[HttpDelete]
public async Task<IActionResult> Delete(string id)
{
  ...
}

但用类似的东西来打击它:

https://localhost:8307/DisabledRegistrations/Delete/f17dff6b3fcd43ba89eab4bbad5c992e

结果:

No webpage was found for the web address: 
https://localhost:8307/DisabledRegistrations/Delete/f17dff6b3fcd43ba89eab4bbad5c992e

我们在Service Fabric中运行,并且不确定是否有任何详细信息。我们的web.config有这个,虽然不确定它是否与该上下文相关:

  <system.webServer>
    <handlers>
      <add name="aspNetCore" path="*" verb="*" modules="AspNetCoreModule" resourceType="Unspecified"/>
    </handlers>

非常感谢任何有关尝试的提示。

更新

如果我确实按照以下方式提交表格:

<form asp-controller="DisabledRegistrations" asp-action="Delete" method="delete" asp-route-id="@Model.Id">
    <div class="text-right">
        <button type="submit" class="btn btn-primary">Confirm</button>
        <a class="btn btn-primary" href="~/DisabledRegistrations/Index">Cancel</a>
    </div>
</form>

然后我仍然得到:

No webpage was found for the web address: 
https://localhost:8307/DisabledRegistrations/Delete/f17dff6b3fcd43ba89eab4bbad5c992e?__RequestVerificationToken=CfDJ8KwmDf2MXHlGrC8zIIntu4IV_83R9jSBwPqk3w8Ymq2VoBnQHN8lxEOHqMUfJwtxX-HLZwr6AWw8uKiVaSz7l-CZjPzZ_IxJhRh31MYiwbgsJzLcQMvrHWGd_sueZ8OLKbRAoYGeVHLfVfkjac-TCaLE9CoOYSCyhY4EDtrFhiLVY3_3h-bJTSLYTT2E7qXcvA

2 个答案:

答案 0 :(得分:1)

[HttpDelete]

是一个类似帖子的动词,你没有从你的链接做http删除只是做了http get因此它与你的路线不匹配。要删除动词你必须使用ajax并指定动词。

您没有提交表单,您只显示一个链接的元素,因此不会删除动词

答案 1 :(得分:0)

我不完全确定您使用表单执行此操作的原因。 &lt;一个&GT; tag会很容易地为你做这件事。

<div class="text-right">
    <a class="btn btn-primary" asp-controller="DisabledRegistrations" asp-action="Delete" asp-route-id="@Model.Id">Confirm</a>
    <a class="btn btn-primary" href="~/DisabledRegistrations/Index">Cancel</a>
</div>