Я пытаюсь вызвать веб-сервис ASP.NET из Javascript, и он не распознает веб-метод, даже когда я полностью укажу имя, я пытаюсь выяснить, что не так.
Вот часть моего файла web.config:
<httpHandlers>
<remove verb="*" path="*.asmx"/>
<add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="*" path="*_AppService.axd" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" validate="false"/>
</httpHandlers>
Вот мои объявления веб-службы
[WebService(Namespace = "http://tempuri.org")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class SavingService : System.Web.Services.WebService
{
[WebMethod]
public static void SaveToDB(string runCode, string container,
string productType, string inspector, string[][] scoregrid, string notes)
и вот javascript (QCApp4 - пространство имен моего проекта):
function PrepToSave()
{
....
QCApp4.SavingService.SaveToDB(codev, containerv, prodtype, inspector, scoregrid, notes);
}
Scoregrid объявляется на стороне js как зубчатый 2d массив с помощью команды Array (). Это было единственное, что меня беспокоило в отношении параметров веб-службы.
А вот сервисный номер:
<asp:ScriptManager id="scriptmng" runat="server">
<Services>
<asp:ServiceReference Path="~/SavingService.asmx" />
</Services>
</asp:ScriptManager>
Я получаю ошибки, независимо от того, вызываю ли я веб-метод напрямую, или вызываю его как SavingService.SaveToDB, или с полными классификаторами. Полученная ошибка говорит о том, что SaveToDB не определен. SavingService не определен, QCApp4 не определен, в зависимости от того, как будет введена первая часть квалифицированного имени.
Я что-то упустил? Я что-то неправильно установил?
Оказывается, я сделал статический WebMethod, конечно, теперь я получаю сообщение об ошибке в консоли ошибок:
Ошибка: [Exception ... "'Sys.Net.WebServiceFailedException: Sys.Net.WebServiceFailedException: сбой метода сервера« SaveToDB »со следующей ошибкой: System.NullReferenceException-- Ссылка на объект не установлена на экземпляр объекта объект «. при вызове метода: [nsIDOMEventListener :: handleEvent] "nsresult:" 0x8057001c (NS_ERROR_XPC_JS_THREW_JS_OBJECT) "location:" "данные: нет]