C# JQuery$.post在VS 2010实例中工作,但在IIS 7.5中部署时不工作

C# JQuery$.post在VS 2010实例中工作,但在IIS 7.5中部署时不工作,c#,javascript,jquery,ajax,asp.net-mvc-3,C#,Javascript,Jquery,Ajax,Asp.net Mvc 3,我已经在$.Post中检查了url,没有问题。我还检查了连接字符串。除了一个$.post命令外,整个网站的一切都很好,包括$.ajax命令。我不断收到“保存记录时出错”的消息 我得到的代码是jquery对话框的“保存”按钮上的代码: var post = $.post(url, $("#myview").serialize(), function () {

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

我得到的代码是jquery对话框的“保存”按钮上的代码:

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溢出。必须在1753年1月1日12:00:00 AM和9999年12月31日11:59:59 PM之间


我正在使用jquery日期控件设置日期值。感谢您的指导。

没有更多信息,我只是在这里摸黑,但可能是您使用的是相对URL,例如
/bob/fred
,服务器的文件结构与您的本地应用程序不同

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

/bob/fred <- the directory you're accessing in the $.post call
/jim/index.aspx <- the page you're calling $.post in
当通过VS2010运行应用程序时,这是正确的。但是,在服务器上,它需要不同的URL


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

您是否尝试通过navigator的开发工具捕获http请求?您是否看到了请求以及服务器的响应?

将customErrors模式设置为“off”(在您的web.config中),然后在firebug中调查响应,您应该会看到从服务器返回的良好堆栈跟踪。只需确保您的catch block(您没有发布)看起来像:

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

或重置日期选择器dateFormat(其他格式):


在你说之前,我很感激你说你已经检查了URL,但是通过检查,你的意思是你已经确保你没有收到404响应吗?我使用的是相对路径,但这应该是好的,我猜,因为对话框显示的URL也是相对的。这只是导致问题的保存?但你有一个好的观点。你认为呢我可以使用ink测试下载Firebug(Firefox,Oragonfly for Opera或Chrome的内置开发工具)在Chrome/Opera中,右键单击页面并单击“检查元素”。现在转到屏幕底部的“网络”选项卡。在Firefox中,右键单击页面并单击“检查元素”,现在单击“网络”选项卡并刷新页面。确定文件在那里,只是代码不起作用ing.你能发布更多的代码吗?添加了代码。这很奇怪,因为它在VS中工作,我知道代码中的服务对象不是空的,因为对话框显示的url显示了从服务对象检索的数据伟大的答案。自定义错误关闭显示了以下错误消息:SqlDateTime溢出。必须介于1/1/1753 12:00:0之间0 AM和12/31/9999 11:59:59 PM,但问题是它在VS中工作,而在IIS中不工作。我正在使用jquery calendar控件设置一个值=1/2/2011。在调试中检查您的datetime值,它可能在本地副本中也传递不好,但在该服务中设置为某个默认值。创建(模型)调用(这对我来说仍然是一个很大的疑问,因为我不知道它的作用是什么,但很可能你的问题就在它里面)。此外,你应该确保你的javascript没有从服务器上以前的一些部署中缓存(清除浏览器缓存以确保它包含了最新部署的所有内容)。是因为IIS服务器安装了US datetime,并且安装了SQL DB,而VS位于英国时区吗?我想这应该不是问题。你尝试过我在前两篇评论中建议的方法吗?还有一个谜团是为什么它在VS中工作,而不在IIS服务器中工作。我真的很困惑,无法理解。可能是MSSQL设置需要它?可能是jquery在IIS中的工作方式不同?可能是其他原因使时间变得很重要FireBug希望它查看实际发布的内容吗?好的,所以它发送的是日/月/年。您是否尝试过将dateFormat参数设置为月/日/年发送?(将更新答案)你最后是怎么解决的?!我也有同样的问题。神秘的是,它在VS,甚至是陌生人onClick按钮(日期选择器值将被传递)上有效,但在日期选择器更改事件上无效!
<configuration>
    <system.web>
        <httpRuntime maxRequestLength="102400" executionTimeout="1200" />
    </system.web>
</configuration>
.datepicker({
    dateFormat: 'mm/dd/yy'
});