【发布时间】: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