【问题标题】:c# jquery Object reference not set to an instance of an objectc# jquery 对象引用未设置为对象的实例
【发布时间】:2014-05-25 18:19:26
【问题描述】:

我在 c# 中有一个 web 服务,我从我的 jquery 脚本中调用它。

这是c#中的webservice

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public void LoadService2Daily(string fromDate, string toDate, string[] campaigns)

在脚本中我这样做:

var selectedCampaigns = $("#campaignDiv input:checkbox:checked").map(function () {
        return $(this).val();
    }).get();
    console.log(selectedCampaigns);


webServiceUrl = 'http://localhost:4025/vmp_webservice.asmx/LoadService2Daily';
$.getJSON(webServiceUrl,
      { fromDate: valFrom, toDate: valTo, campaigns: selectedCampaigns })
       .done(function (result) {

我得到 error 500,当我检查响应时,它是 对象引用未设置为对象的实例。

注意

如果我从 Web 服务中删除了 string[] array,它可以正常工作,但是当我添加它时,它就停止了工作。所以我确定这是因为string array 的事情,但我不知道错误到底出在哪里。

没有数组的代码已经运行了3年没有任何问题,但现在我正在做一些编辑,我需要传递那个数组。

这是console.log 的屏幕截图,用于打印 selectedCampgains。请注意,正如我在代码中向您展示的那样,此日志是在调用 Web 服务之前获取的

编辑

我注意到网络服务的 url 是

Request URL:http://localhost:4025/vmp_webservice.asmx/LoadService2Daily?fromDate=2014-05-25+00%3A00%3A00&toDate=2014-05-25+23%3A59%3A01&campaigns%5B%5D=default&campaigns%5B%5D=Support

因为它不包含字符串数组,对吧?

编辑3

这是我得到的全部例外

System.NullReferenceException: Object reference not set to an instance of an object.
   at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
   at System.Web.Services.Protocols.UrlParameterReader.Read(HttpRequest request)
   at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
   at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

【问题讨论】:

  • @SonerGönül 这不是空异常,主要问题是500 错误。
  • 您是否设置了断点并单步执行了 Web 服务的代码,以准确找出引发错误的位置?
  • @RoryMcCrossan 是的,我已经这样做了。但是没有执行断点,这表明根本没有调用 Web 服务。我认为我说错了。对吗?
  • 在 selectedCampaigns 变量中发生了很多事情。在将 selectedCampaigns 传递给服务器端方法之前,它的结果是什么?使用浏览器调试器查看信息。考虑像 fiddler 这样的东西,看看有什么消息被传递到服务器

标签: c# javascript jquery


【解决方案1】:

正在生成的 URL 有方括号,你能检查一下没有方括号是否可以工作,即没有 %5B 和 %5D(没有 url 编码)

http://localhost:4025/vmp_webservice.asmx/LoadService2Daily?fromDate=2014-05-25+00%3A00%3A00&toDate=2014-05-25+23%3A59%3A01&campaigns=default&campaigns=Support

【讨论】:

  • 请告诉我你做了什么以及如何解决这个问题,你可能 url 有效,但我应该在我的请求中做些什么来避免这些你已经删除的东西?
  • 请举个例子,我真的不知道。
  • 我现在会接受你的回答,+1 请你在我这个关于同一件事的新问题中完成你的回答stackoverflow.com/questions/23859946/…
  • 好的,我会为你做的
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多