Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 向自定义服务器控件添加web方法_Jquery_Asp.net_Asmx_Custom Server Controls_Asp.net Webcontrol - Fatal编程技术网

Jquery 向自定义服务器控件添加web方法

Jquery 向自定义服务器控件添加web方法,jquery,asp.net,asmx,custom-server-controls,asp.net-webcontrol,Jquery,Asp.net,Asmx,Custom Server Controls,Asp.net Webcontrol,我已经创建了一个服务器用户控件,希望它能够使用WebMethod。如果web方法在我的主应用程序中(作为ASMX文件),那么它可以正常工作。问题是我想将此方法包含在与用户控件相同的项目库中,以便可以将DLL作为独立项目分发。因为该项目是一个类库,所以我不得不将web服务设置为VB文件,而不是.ASMX。当我尝试在.VB文件中调用web方法时,似乎什么都没有发生(没有错误,但我的webmthod上的断点从未达到),这能实现吗?以下是我如何创建控件的示例: Web方法,在myClass.VB中:

我已经创建了一个服务器用户控件,希望它能够使用WebMethod。如果web方法在我的主应用程序中(作为ASMX文件),那么它可以正常工作。问题是我想将此方法包含在与用户控件相同的项目库中,以便可以将DLL作为独立项目分发。因为该项目是一个类库,所以我不得不将web服务设置为VB文件,而不是.ASMX。当我尝试在.VB文件中调用web方法时,似乎什么都没有发生(没有错误,但我的webmthod上的断点从未达到),这能实现吗?以下是我如何创建控件的示例:

Web方法,在myClass.VB中:

 <System.Web.Script.Services.ScriptService()> _
 <WebService(Namespace:="http://tempuri.org/")> _
 <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _     
 Public Class myClass
     Inherits System.Web.Services.WebService
<WebMethod()> _
Public Function TestMethod(ByVal prefixText As String) As String
    return "Hello World"
end Function
还有我的JQuery方法,可以在myScripts.js中找到:

function serviceCall(getText, tbId, divId, bgColor) {
   $.ajax({
    type: "POST",
    url: 'myClass.asmx/TestMethod',
    data: '{"prefixText":"'some test'"}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
       alert('Success')           
    },
    error: function (e) {
         alert('Error')   
    }
});
我已经创建了服务类,并将其包含在与用户控件相同的项目中,但从未调用该服务。另一方面,如果我将服务放在web项目中的ASMX文件中,它将很好地到达web方法

任何帮助都会很好

谢谢
jason

对不起,如果您使用旧的ASMX技术,那么您将无法使用ASMX文件。另一方面,您可以使用WCF实现这一点

这将如何在WCF中实现?这是否需要对IIS进行更改?我有点迷恋某些东西。IIS没有变化。WCF支持自托管。我现在就这么做——我的web应用程序中有一个WCF JSON服务。是的,但我的代码不在web应用程序中。我可以在类库中包含WCF并让该库中的服务器控件使用它吗?哦,我忘了。是的,你能做到。您需要为您的控制类提供一个静态构造函数,该类将承载WCF服务。见“
function serviceCall(getText, tbId, divId, bgColor) {
   $.ajax({
    type: "POST",
    url: 'myClass.asmx/TestMethod',
    data: '{"prefixText":"'some test'"}',
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) {
       alert('Success')           
    },
    error: function (e) {
         alert('Error')   
    }
});