【问题标题】:Why does this Post work in VS, but not when published?为什么这篇文章在 VS 中有效,但在发布时无效?
【发布时间】:2014-01-07 20:48:08
【问题描述】:

在 VS 中,这很好用:

http://x.x.x.x/Order/DeleteLineItem?id=c709d018-fd55-442c-9e0d-0826f98cf368

但是,当应用发布并运行时,它会返回 404 错误。

它正在发布到 IIS 7.5。该应用程序的所有其余部分都可以正常工作,只是其中有 ID 的链接失败了。

但奇怪的是,在 Visual Studio 中,在 FireFox 和 IIS 中,它都能正常工作。但是在 VS 之外,它们都给出了相同的错误信息。

我已直接在服务器上运行它以获取任何其他错误信息,但它只是显示 404。

这对我来说没有任何意义。我还应该做些什么来调试它?此时,应用程序没有任何针对 404 类型错误的错误处理。

错误信息显示处理程序是“StaticFile”,错误代码是:0x80070002

更新

问题在于 JQuery 调用的 URL 缺少站点名称。

这是有效的:

$.ajax({
        url: "/PropertySearch/Order/EditLineItem",
        data: { id: dataItem.id },
        dataType: 'html',
        success: function (data) {
            $('#content').html(data); // 
        } 

【问题讨论】:

  • 需要更多信息来帮助解决这个问题。你甚至没有说明你要发布到哪个网络服务器。
  • 是的,没错,我添加了更多数据。
  • 您的 id 是否与生产数据库中实际存在的项目相匹配?
  • 能否请您添加路由定义和 DeleteLineItem 操作方法代码?

标签: asp.net-mvc jquery


【解决方案1】:

一个可能的原因是您发布到的环境需要 SSL,并且您使用的是 http 而不是 https。

另一种可能性是 ASP.NET MVC 未在部署环境中正确注册/配置。错误消息是否表明它正在使用 StaticFile 处理程序?您是否尝试过使用 Phil Haack 的路由调试器来了解正在发生的事情?

http://haacked.com/archive/2008/03/13/url-routing-debugger.aspx/

【讨论】:

  • 将检查路由调试器。所有其他 MVC 视图都正常显示,只是带有 ID 的视图。也许是因为我使用 Guid 作为 Id。我不明白为什么会有所作为,但这没有任何意义。
  • 在这种情况下不使用 SSL。
  • 当应用程序启动并运行并在多个局部视图中导航时,我相当确定 MVC 已正确安装。只有当它到达使用 GUID 的控制器操作时才会出现问题。我将尝试切换到 int id。
猜你喜欢
  • 2011-03-12
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
相关资源
最近更新 更多