1
我創建了一個服務器用戶控件,我希望它能夠使用WebMethod。如果Web方法在我的主應用程序(作爲ASMX文件),它工作正常。問題是我想將此方法包含在與用戶控件相同的項目庫中,以便我可以將DLL作爲獨立項目進行分發。因爲該項目是一個類庫,所以我必須使Web服務成爲VB文件,而不是.ASMX。當我嘗試在我的.VB文件中調用Web方法時,似乎沒有任何事情發生(沒有錯誤,但我的Web方法中的斷點從未達到)是否可以實現?下面是我如何創建我的控制爲例:將web方法添加到自定義服務器控件
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
和我的服務器控件設置這樣的,在miniActiveDirectorySearch.VB:
Public Class miniActiveDirectorySearch
Inherits WebControl
Private Sub attachWebResources()
ScriptManager.RegisterClientScriptResource(Me, Me.GetType, "myScripts.js")
ScriptManager.RegisterClientScriptResource(Me, Me.GetType, "jquery-1.4.1.min.js")
End Sub
Protected Overrides Sub CreateChildControls()
createDynamicControls()
MyBase.CreateChildControls()
End Sub
Protected Overrides Sub OnInit(ByVal e As System.EventArgs)
attachWebResources()
MyBase.OnInit(e)
End Sub
Private Sub createDynamicControls()
Controls.Clear()
Try
tblMainLayout = buildMaintable() 'builds out the control
'to save space, I removed how this works. But, it creates a textbox that
'has a onKeyPress Event. When the user hits return, it calls the jQuery
'function serviceCall
Controls.Add(tblMainLayout)
Catch ex As Exception
Throw New ApplicationException("Exception Occurred", ex.InnerException)
End Try
End Sub
end Class
和我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')
}
});
我已經創建的服務CL並將其包含在與我的用戶控件相同的項目中,但該服務從未被調用。另一方面,如果我將服務放在我的web項目的ASMX文件中,它將會很好地到達web方法。
任何幫助將是巨大的
感謝 傑森
這將如何在WCF中完成?這是否需要更改IIS?我對某些東西感興趣。 – jason 2013-04-23 15:32:04
對IIS沒有更改。 WCF支持自主託管。我現在就這樣做 - 我的Web應用程序的一部分託管了WCF JSON服務。 – 2013-04-23 17:51:25
是的,但我的代碼不在Web應用程序中。我可以將WCF包含在類庫中,並且該庫中的服務器控件會使用它嗎? – jason 2013-04-23 18:01:23