Jquery System.Data.DataSet操作在生产MVC应用程序和本地应用程序之间有所不同

Jquery System.Data.DataSet操作在生产MVC应用程序和本地应用程序之间有所不同,jquery,asp.net,asp.net-mvc,asp.net-web-api,pass-by-reference,Jquery,Asp.net,Asp.net Mvc,Asp.net Web Api,Pass By Reference,我有一个ASP.NET MVC应用程序,它的功能很像SSRS报告—加载System.Data.DataSet并在网格中显示其内容。我使用了一些jquery控件来允许某种程度的客户端操作 我有一些用户可以对网格中的选定项执行的“操作”。当他们单击“操作面板”中的按钮时,我生成了一个web请求,它基本上告诉WebAPI控制器用户在UI中使用的是哪个System.Data.DataRow WebAPI控制器不只是“信任”或直接处理发布的数据。相反,它使用postedData作为返回模型(System.

我有一个ASP.NET MVC应用程序,它的功能很像SSRS报告—加载System.Data.DataSet并在网格中显示其内容。我使用了一些jquery控件来允许某种程度的客户端操作

我有一些用户可以对网格中的选定项执行的“操作”。当他们单击“操作面板”中的按钮时,我生成了一个web请求,它基本上告诉WebAPI控制器用户在UI中使用的是哪个System.Data.DataRow

WebAPI控制器不只是“信任”或直接处理发布的数据。相反,它使用postedData作为返回模型(System.Data.DataSet)的指南,并查找用户在其客户机上选择的精确DataTable和DataRow

我的一个“动作处理”网络课程让我感到悲伤。它应该更新传递给它的数据行中的一些值这是什么原因造成的?和/或如何调试此功能?

行是“通过引用”传递的,当我在本地(使用Visual Studio ASP.NET开发服务器)进行测试时,一切都正常-可以单击按钮,WebAPI调用所需的操作并传递所需的数据行,并向jquery ajax调用方返回“成功”消息。这会触发UI刷新,然后,砰的一声,您会在屏幕上看到更新的值

为什么在运行IIS 7.5.7600的Windows 2008 R2生产服务器中,此操作会停止工作? 我已经清理了web应用程序/bin,并从我的Visual Studio项目重新部署了fresh


此外,我刚刚部署到我的沙盒环境中。。也是2008 R2,IIS 7.5.7600。。一切都很好。如果我必须进行远程调试,我更愿意针对生产服务器以外的任何设备进行调试。啊。。我接受你的想法


我正在将我的生产环境和沙盒IIS环境的服务器配置转储为XML,到目前为止,没有真正的大区别。。两者都使用由managedRuntimeVersion=“v4.0”定义的应用程序池,并且在其站点配置中都没有任何类型的有意义的差异

沙箱:

<location path="my.test.dataApp - 96">
    <system.webServer>
        <security>
            <authentication>
                <anonymousAuthentication enabled="false" />
                <windowsAuthentication enabled="true">
                    <providers>
                        <clear />
                        <add value="NTLM" />
                        <add value="Negotiate" />
                    </providers>
                </windowsAuthentication>
            </authentication>
        </security>
    </system.webServer>
</location>

制作:

<location path="wq.ross.local">
    <system.webServer>
        <security>
            <authentication>
                <anonymousAuthentication enabled="false" />
                <basicAuthentication enabled="false" />
                <windowsAuthentication enabled="true">
                    <providers>
                        <clear />
                        <add value="NTLM" />
                        <add value="Negotiate" />
                    </providers>
                </windowsAuthentication>
            </authentication>
        </security>
    </system.webServer>
</location>


这个问题还有更多令人困惑的皱纹:
这个问题似乎只在特定的数据集上表现出来。。如果我在应用程序上导航到加载test System.Data.DataSet的不同“查看器”(即,如果我将不同参数传递给同一控制器操作),并且如果我单击连接到相同类型的“action.NET类”的按钮。。它确实有效地更新了选定的System.Data.DataRow。。因此,对于这个特定的测试数据集,在开发、沙盒或生产方面没有问题。。但是对于我的另一个数据集,它只在DEV和SANDBOX中工作,而不在生产环境中工作(这三个环境目前都从同一个生产数据库源加载它们的数据集)

到今天为止,仍然没有真正的答案来解释到底是什么导致了我的问题。我从来没有明确指出导致我的特定数据集操作在Windows 2008 R2的一个特定“生产”实例上失败的技术问题,而在同一数据集上工作的同一应用程序代码在我的Windows 2008 R2的“沙盒”实例上没有bug

然而,我正在发布我的最终发现和解决方法

在我的专栏文章中,我详细描述了我的DataSet viewer MVC/WebAPI解决方案如何在本地工作站和我的SANDBOX 2008 R2上按预期工作,但在我的PRODUCTION 2008 R2服务器上始终失败(但仅在特定的数据集上)

从那篇文章开始,我发现了我的沙箱和生产环境之间的一个区别。SANDBOX安装了.NETFramework 4.5.x,而生产环境仅运行.NETFramework 4

当时,这是一个MVC4解决方案,所以我不认为安装4.5是一个要求。但是,不管出于什么原因,我的MVC4解决方案在安装了4.5框架的服务器(和本地工作站)上运行得更好。所以对我来说。。解决办法很简单:


我的解决方案是让我的网络管理员提供一个新的2008 R2服务器。我构建了IIS并将.NET Framework升级到了4.5.5(并在我工作时将我的解决方案升级到MVC5/WebApi2)——现在一切正常了。

您是在生产过程中遇到了特定的错误,还是根本看不到预期的行为?没有错误。我只是没有看到预期的行为。如果出现错误,我希望它会影响ajax请求,但它会成功完成并返回。您是否在为开发人员和沙箱构建调试模式,而不是为生产发布?你在为你的JS使用捆绑和缩小吗?现在,我已经关闭了所有服务器上的捆绑/缩小功能。我的沙盒和发布服务器处于“发布”模式。我目前只在调试模式下运行我的开发版本。没有运气。我输入了一些事件日志消息,以查看控制器实际在做什么。我可以在服务器上看到发布的JSON对象被正确解析为JArray(假设对于给定的请求,JArray的长度为5,表示5个数据行),并且我可以通过事件日志看到JArray被进一步解析为.NET FilterExpression字符串,然后传递到DataTable.Select()方法中。。并且正在成功地选择正确/所需的数据行数(@John Peters-感谢您的贡献,但是,我现在已经排除了眉毛