JQuery$.post在VS2010实例中有效,但在IIS 7.5中部署时无效

本文关键字:IIS 部署 无效 但在 有效 post VS2010 JQuery 实例 | 更新日期: 2023-09-27 18:20:31

我已经检查了$.Post中的url,它很好。我还检查了连接字符串。除了一个$.post命令外,包括$.ajax命令在内的整个网站上的一切都很好。我不断收到"保存记录时出错"的消息。

我的代码是在jquery对话框的Save按钮上:

var post = $.post(url,
                        $("#myview").serialize(),
                        function () {
                            thisDialog.dialog("close");
                        });
                        post.error(function (xhr, ajaxOptions, thrownError) {
            alert("Error while saving the record");

当我在调试模式下运行时,这在本地VS实例中有效,但当我将网站部署到IIS 7.5时,它不会运行。有人能指导一下问题可能是什么吗?所有dll都存在,url也很好

url是:主页/启动

[HttpPost]
    public ActionResult Start(StartModel model, FormCollection collection)
            {
                try
                {
                    Service.Create(model);
                    return RedirectToAction("List");
                }

这在VS中有效,但在IIS 7.5 中无效

我得到错误代码500

堆栈跟踪显示错误消息:SqlDateTime溢出。必须在1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间

我正在使用jquery日期控件设置日期值。欢迎提供任何指导。

JQuery$.post在VS2010实例中有效,但在IIS 7.5中部署时无效

将customErrors模式设置为"off"(在web.config中),然后调查firebug中的响应,您应该会看到从服务器返回的漂亮的堆栈跟踪。只要确保你的捕获块(你没有发布)看起来像:

try
{
// your code here
}
catch(Exception ex)
{
 throw;
}

(请确保您没有执行throw-ex;因为那样会丢失堆栈跟踪)。

你可以从那里继续。

作为一种盲目的猜测,可能会发生:1.服务.创建(模型);失败(也许您没有从该机器访问"服务"的权限,或者2.你可能会发布太多数据,所以试着增加中的maxRequest长度

<configuration>
    <system.web>
        <httpRuntime maxRequestLength="102400" executionTimeout="1200" />
    </system.web>
</configuration>

不过,了解堆栈跟踪会很有用。

如果不更改当前设置中的任何内容,它可能只是日期格式中的一个错误。不要通过日历控件将日期设置为1/2/2011,而是尝试将其设置为1/2/2011 12:00:00 PM

或者重置datepicker日期格式(此处为其他格式):

.datepicker({
    dateFormat: 'mm/dd/yy'
});

您是否尝试通过导航器的开发工具捕获http请求?你看到请求了吗?服务器的响应是什么?

在没有更多信息的情况下,我只是在黑暗中拍摄,但可能是您使用了一个相对的URL,例如/bob/fred,并且服务器的文件结构与您的本地应用程序不同。

假设您的应用程序采用以下结构:

/bob/fred <- the directory you're accessing in the $.post call
/jim/index.aspx <- the page you're calling $.post in

当你把它放在服务器上时,来自应用程序根的文件结构是这样的:

/site/bob/fred
/site/jim/index.aspx

在VS 2010中运行应用程序时,这是正确的。然而,在服务器上,它需要一个不同的URL。

下一步应该是使用Firebug检查$.post调用,看看你是否得到了404。如果是这样,以上信息应该会有所帮助。如果没有,请发布更多代码。