我有一个PageMethod和对该方法的AJAX调用,该方法传递产品SKU数组和请求的SKU数。它在DEV(IIS7)中工作良好,但在PROD(IIS6)中返回500错误:将JSON对象传递给DEV,而不是PROD
Message: Object reference not set to an instance of an object.
StackTrace: at ViewProduct.GetInventory(List`1 orderedSkus)
ExceptionType: System.NullReferenceException
这里是相关的代码。如果你需要web.config中的特定片段,我也可以抓住这些片段,尽管我没有看到任何会影响任何内容的东西。
我试图在PageMethod中使用两个不同的对象定义,orderedSkus As Object()和orderedSkus As List(Of Object)。相同的区别,但同样的结果...空引用。
AJAX:
var editedSkus = [];
function checkInventory() {
editedSkus.length = 0;
var textBoxes = $('input:text', '.table-orderMatrix');
if (formEdited(textBoxes)) {
var DTO = { 'orderedSkus': editedSkus };
$.ajax({
type: "POST",
url: BasePath + "ViewProduct.aspx/GetInventory",
data: JSON.stringify(DTO),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (msg) {
var skus = msg.d;
$.each(skus, function() {
//do stuff
});
}
});
} else {
// Do other stuff
}
}
var formEdited = function (textBoxes) {
var edited = 0;
$.each(textBoxes, function (i) {
if (this.value > 0) {
var sku = {};
sku.skuNumber = $(this).prev().val();
sku.orderAmount = this.value;
editedSkus.push(sku);
edited += 1;
}
});
return edited;
}
PageMethod的:
<WebMethod()> _
Public Shared Function GetInventory(orderedSkus As List(Of Object)) As List(Of Object)
Dim _skus As SKUCollection
Dim _sku As SKU = Nothing
Dim warnings As New List(Of Object)
Dim qty As Integer
_skus = CurrentStyle.SKUs
For Each _orderedSku As Object In orderedSkus
Dim dicValues As New Dictionary(Of String, Object)()
dicValues = DirectCast(_orderedSku, Dictionary(Of String, Object))
Dim orderedSkuNumber As String = dicValues("skuNumber").ToString()
Dim orderAmount As String = CType(dicValues("orderAmount"), Integer)
Try
'Stuff
Catch ex As Exception
'Health Monitoring
End Try
Next
Return warnings
End Function
编辑:添加 “小细节”,我们的DEV服务器正在运行IIS7(其中PageMethod的作品),而PROD仍然在IIS6下(它没有)。我知道...不要让我开始。添加这个是因为我觉得它可能对情况有重要意义。
我应该补充说是的,editedSkus对象被填充,并且AJAX调用确实尝试传递参数。根据Firebug,字符串看起来像这样: {“orderedSkus”:[{“skuNumber”:“6257-0054707”,“orderAmount”:“1”}]} –