微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决 MVC 5 更新和删除错误

如何解决如何解决 MVC 5 更新和删除错误

我已经在 .net 4.7.2 中构建了 MVC 5 Web 应用程序。它在我的本地机器上运行良好。更新和删除命令失败,由于这篇文章,我现在已经解决了:DELETE/PUT verbs result in 404 Not Found in WebAPI,only when running locally,我将此行添加到 web.config 并且所有 CRUD 现在都可以工作了:

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0

但是,当我将应用程序发布到我的托管服务器时,它会在 web.config 中的这一行中断。 当我删除该行时,只有创建和检索数据有效,但更新和删除失败并显示错误

未将对象引用设置为对象的实例。

在索引视图中的这一行:第 40 行:@For Each item In Model

我理解这是因为此时模型为空/什么都没有。

这是我的删除函数显示错误开始的位置...

    Public Function Delete(ByVal id As Integer) As ActionResult

        Dim Client As HttpClient = New HttpClient()
        Client.BaseAddress = New Uri(myWeb & "AppMenuCRUD")

        Dim APIConsumer = Client.DeleteAsync("AppMenuCRUD/" & id.ToString())
        APIConsumer.Wait()

        Dim Result = APIConsumer.Result << failure here: Error 404

        If Result.IsSuccessstatusCode Then
            Return RedirectToAction("Index")
        End If

        Return View("Index")

    End Function

托管服务器运行的是 Windows Server 2016、.Net 4.7.2。我已启用对网站文件夹的读/写。

这是我在托管服务器中的 IIS 设置:

enter image description here

更新

  1. 进一步研究后,我的托管服务器现已更新到 .net 4.8,现在一切都失败了。我现在甚至无法加载索引视图页面。它在与上面相同的第 40 行处中断。
  2. 在 IIS 中,我的应用程序池设置为集成的 .net 4.0。我在下拉列表中看不到任何更高的内容
  3. 在 IIS 中,我没有在 HTTP 动词列表中过滤任何内容,我认为这意味着它应该接受任何内容

更新 2

  1. 更新到 .net 4.8 后,我现在收到一个错误

锁违规

我已启用 IIS 中的所有内容包括将所有 ASP 配置从只读更改为读/写。

我担心我可能会给 VPS 带来漏洞...

我还需要做些什么才能让它发挥作用?

解决方法

有时您需要在更改目标框架时手动更新 Web.config,请仔细检查这些行:

<system.web>
    <compilation debug="true" targetFramework="4.8">
    <httpRuntime targetFramework="4.8" />
...
,

所以,这就是我最终让它工作的方式:

  1. 我使用 Plesk 作为“控制面板”。显然,Plesk 有一些锁,我必须在这里解锁:

Plesk > 工具与设置 > 安全 > 禁止覆盖处理程序的能力

感谢https://support.plesk.com/hc/en-us/articles/115000287305-Site-shows-500-19-Internal-Server-Error-Config-Error-Lock-violation。我很惊讶我的主人竟然帮不上忙!

  1. 在启用 VPS 中的所有其他功能的过程中,我最终启用/安装了 WebDAV。这显然也不允许“编辑/删除”操作。我没有卸载它,而是像这样从 web.config 中整理出来:

    ...

感谢Web API Put Request generates an Http 405 Method Not Allowed error

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。