“博”技术之精,“客”网络之友。

博,客之博;客,博之客。
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
今天看了Dflying Chen 的关于在ASP.NET Atlas种调用Web Service的文章,
对我们这些初学者确实起到不小的作用,但是文章中只注重的相对比较重要的内容,对一些细节问题没有进行强调,造成了很多网友在使用时都出现了Web Service对象无法找到的问题。
而且我开始模拟练习的时候也出现了这样的问题,为什么人家可以,我这里就不行了呢?
最终被我发现了问题的原因:
 1using System;
 2using System.Web;
 3using System.Collections;
 4using System.Web.Services;
 5using System.Web.Services.Protocols;
 6using System.Web.Script.Services;//必须加上这个引用,目的是在14行增加ScriptService属性
 7
 8
 9/// <summary>
10/// MyService 的摘要说明
11/// </summary>

12[WebService(Namespace = "http://tempuri.org/")]
13[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
14[ScriptService]//第6行引用后,再这里增加[ScriptService]属性,这样aspx页面就可以找到这个webservice了
15public class MyService : System.Web.Services.WebService {
16
17    public MyService () {
18
19        //如果使用设计的组件,请取消注释以下行 
20        //InitializeComponent(); 
21    }

22
23    [WebMethod]
24    public string Hello(string User) {
25        return "Hello " + User;
26    }

27    
28}

29
30

除此以外,在调用Web service的ASPX页面中,增加web service的引用时要注意.asmx文件和当前.aspx文件的路径。
        <asp:ScriptManager ID="ScriptManager1" runat="server">
            
<Services>
                
<asp:ServiceReference Path="MyService.asmx" /> <!-- 这里要注意.asmx文件和.aspx文件的相对路径-->
            
</Services>
        
</asp:ScriptManager>

不过我这里还有一个疑问:Dflying Chen  在介绍Javascript代码时直接使用了function "$()",但是没有进行明显的定义,我在使用的时候,这里也总是提示脚本错误,难道这个$()已经封装在所谓的Atlas.dll文件中了么?(我机器上好像没有这个文件。。。),高手请指点一下,先谢了,呵呵
遇到这个问题的朋友,可以在javascript增加function $()的定义,如下:
function $(s){return document.getElementById(s);}