我使用网络服务发布一些数据但从未触发过Web服务。
这里我如何在客户端调用web服务:
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;
});
}
这是我的网络服务:
[WebMethod]
public void SaveXml(string year, string month, string someString)
{
//some logic
}
但Web服务SaveXml从未被触发。在浏览器控制台中我收到此错误:
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)
知道为什么没有执行触发器以及为什么我上面会出现错误?
答案 0 :(得分:2)
您应该像下面一样装饰您的网络服务。我在这里定义了将格式返回为“Json”。如果您需要xml,则可以相应地进行更改。
当你正在进行ajax调用时,你需要在你的内容中定义 service方法(
ScriptMethod
)。包含Web / Script方法的类必须具有[System.Web.Script.Services.ScriptService]
以便可以调用 来自ajax(根据.asmx
代码模板添加的评论)
[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;
}
}
如下所示更改您的服务类,并告知我们是否解决了您的问题