2017-12-13 4 views
0

Ich verwende Web-Service, um einige Daten zu posten, aber der Web-Service wird nie ausgelöst.Warum wird mein WebService nicht ausgelöst?

Hier, wie ich Web-Service in der Client aufrufen:

function saveData(year, month, someString) { 

     $http({ 
      method: 'POST', 
      url: "../../Services/ReportDepartmentService.asmx/SaveXml",//?" + 'year=' + year + '&' + 'month=' + month, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      data: { "year": year, "month": month, "someString": someString } 
     }).then(function success(response) { 
      var success = true; 
     }, function error(response) { 
      var success = false; 
     }); 
    } 

Hier ist meine Web-Service:

[WebMethod] 
    public void SaveXml(string year, string month, string someString) 
    { 
     //some logic 
    } 

Aber die Web-Service-saveXML ist triggered.And nie Konsole in Browser ich Dieser Fehler:

System.InvalidOperationException: SaveXml Web Service method name is not valid. 
    at System.Web.Services.Protocols.HttpServerProtocol.Initialize() 
    at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing) 

Eine Idee, warum der Trigger nicht ausgeführt wird und warum ich Fehler oben bekomme?

Antwort

2

Sie sollten Ihren Web-Service wie unten zu dekorieren. Ich habe hier definiert, um das Format als "Json" zurückzugeben. Wenn Sie XML benötigen, können Sie dies entsprechend ändern.

As you are making ajax post call, you need to define that in your service method (ScriptMethod).The class containing the Web/Script methods must have the [System.Web.Script.Services.ScriptService] in order to be callable from ajax (as per the comment added by the .asmx code Template)

[WebService(Namespace = "http://YourNameSpaceGoesHere/")] 
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 
[System.ComponentModel.ToolboxItem(false)] 
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
[System.Web.Script.Services.ScriptService] 
public class ReportDepartmentService: System.Web.Services.WebService 
{ 
    [WebMethod] 
    [ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)] 
    public string SaveXml(string year, string month, string someString) 
    { 
     string returnMessage = string.Empty; 
     // Remaining code goes here..... 
     // Assign Success/error message to your returnMessage. 
     return returnMessage; 
    } 
} 

Service-Klasse ändern, wie unten und lassen Sie uns wissen, ob es Ihr Problem

+1

löst es dank für die Post gearbeitet hat! – Michael

+0

Willkommen. Glücklich zu hören :) –

+0

Zwei Fragen: 1). Ist der in WebService eingegebene Namespace identisch mit der URL im Client (in der Funktion saveData(), wenn Sie sehen)? 2). UseHttpGet = false, warum wird dies als falsch initialisiert? –

Verwandte Themen