【发布时间】:2012-02-19 21:37:10
【问题描述】:
我在我的 vb.net 4.0 Web 应用程序(或网站......不确定它是什么 - 有关系吗?)中创建了一个脚本服务,因为我想从客户端调用它。我收到客户端错误,说我的命名空间无法识别(下面代码中的 HomepageService)。我已经尝试使用在项目中配置为“根命名空间”的名称对其进行限定,但 js 说它也不识别该命名空间。
该应用程序较旧 - 我们最近将其从 dotnet 2.1 转换为 4.0。
我找到了以下相关主题,因为当我尝试在 HomepageServices.asmx.vb 中导入 System.Web.Extensions 时,Visual Studio 说即使我可以看到它,它也无法识别它,列在参考文献下的工作室。
[System.Web.Extensions 程序集无法解析][1]
我尝试发布该主题的后续问题,因为我尝试按照答案中的说明进行操作,但它们不起作用(我在项目 > 属性 > 应用程序中没有“目标框架”),但有人删除了是因为我想我不允许问后续问题吗?
我查阅了各种网站并按照说明进行操作,以下是一个示例: http://www.asp.net/ajax/documentation/live/tutorials/ConsumingWebServicesWithAJAXTutorial.aspx
这是位于我网站根文件夹中的 HomepageService.asmx 的内容:
Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel
Imports System.Collections.Generic
<System.Web.Services.WebService(Namespace:="http://localhost/appname")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
<System.Web.Script.Services.ScriptService()> _
Public Class HomepageService
Inherits System.Web.Services.WebService
Shared _rand As Random = New Random(Environment.TickCount)
<WebMethod()> _
Public Function Test(ByVal s As String) As Integer
Return _rand.Next(0, 120)
End Function
End Class
来自母版页的片段:
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="Scriptmanager1" runat="server" EnablePageMethods="true">
<Scripts>
<asp:ScriptReference Path="CallWebServiceMethods.js" />
</Scripts>
<Services>
<asp:ServiceReference Path="HomepageService.asmx" />
</Services>
</asp:ScriptManager>
在我的页面顶部,我导入了 js:
PageRequestManager.js:
HomepageService.set_defaultSucceededCallback(
OnLookupComplete);
HomepageService.set_defaultFailedCallback(
OnError);
function OnLookup() {
HomepageService.Test(stb.value);
}
function OnLookupComplete(result, userContext) {
// userContext contains symbol passed into method
var res = document.getElementById("_resultLabel");
res.innerHTML = userContext + " : <b>" + result + "</b>";
}
function OnError(result) {
alert("Error: " + result.get_message());
}
我的 web.config 是一团糟,但我很乐意发布它...
【问题讨论】:
-
我尝试了位于 msdn.microsoft.com/en-us/library/bb532367(v=vs.90).aspx 的 msdn 演练,它可以工作。主要区别似乎是他们的 webservice 类被命名空间包围,并且完全使用标记中的命名空间进行限定。但是我不能在我的网络服务周围放置一个命名空间,因为在 VB 中有一个默认命名空间,我不能按照其他地方的建议将其空白,因为应用程序中已经存在的代码将无法编译......有什么办法吗解决这个问题?
标签: web-services scriptservice