2012-10-31 54 views
0

我有一个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下(它没有)。我知道...不要让我开始。添加这个是因为我觉得它可能对情况有重要意义。

+0

我应该补充说是的,editedSkus对象被填充,并且AJAX调用确实尝试传递参数。根据Firebug,字符串看起来像这样: {“orderedSkus”:[{“skuNumber”:“6257-0054707”,“orderAmount”:“1”}]} –

回答

1

我想通了。该对象被传递得很好。然而,一些代码在Try ... Catch in PROD中失败,在DEV中工作正常(这与AJAX调用完全无关)。反过来,而不是提供一个适当的错误消息(即使在Catch中添加一些错误处理后),我刚刚收到错误,我发送的对象为空。奇怪,但你去了。

相关问题