none
ajax调用webservice问题 RRS feed

  • 问题

  • 问题1
    我的页面中有个UserControl,是页面的头信息
    里面是这样写的

    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
    <Services>
    <asp:ServiceReference Path="~/Ticket.asmx" InlineScript="true" />
    </Services>
    </asp:ScriptManager>
    这样我就能在每个页面中使用了Ticket.asmx,但是随着页面的增多功能的添加Ticket.asmx越来越大而且也越发的不规则
    在Ticket.asmx中已经有6个类。
    我现在想把他们分开,但是在我的page里面如何更改Path属性!
    问题2
    在webserver的名字空间我是这样写的
    [WebService(Namespace = "192.168.0.101")]
    这是我机器的ip但是除了我谁也用不了
    2009年4月9日 8:40

答案

  • 1
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
    <Services>
    <asp:ServiceReference Path="~/Ticket1.asmx" InlineScript="true" />
    <asp:ServiceReference Path="~/Ticket2.asmx" InlineScript="true" />
    <asp:ServiceReference Path="~/Ticket3.asmx" InlineScript="true" />
    </Services>
    </asp:ScriptManager>

    2 和命名空间应该没关系 你看看你的iis是不是有权限问题?
    热烈庆祝进入4星活跃用户队伍
    有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。
    2009年4月9日 9:15
  • 我现在的一个解决方法就是
    将要引用的信息直接写在页面中
    <script language="javascript" type="text/javascript" src="<%=javaseript %>"></script>
    <script language="javascript" type="text/javascript" src="Ticket.asmx/js"></script>
    这样就可以在不同页面引用不同的asmx也不用管UserControl
    ——
    不过
    引用之后时不时出现(同样的页面有时有有时没有)

    Sys.ArgumentTypeException类型,Sys._Application的对象无法转换成
    类型Sys._Application
    参数名Instance
    但是功能和方法调用没有问题,我还在找她在什么时候会出现这个问题

    2009年4月21日 21:26

全部回复

  • 1
    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
    <Services>
    <asp:ServiceReference Path="~/Ticket1.asmx" InlineScript="true" />
    <asp:ServiceReference Path="~/Ticket2.asmx" InlineScript="true" />
    <asp:ServiceReference Path="~/Ticket3.asmx" InlineScript="true" />
    </Services>
    </asp:ScriptManager>

    2 和命名空间应该没关系 你看看你的iis是不是有权限问题?
    热烈庆祝进入4星活跃用户队伍
    有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。
    2009年4月9日 9:15
  • 我当前也是这样写了,但是我的这个ScriptManager Control每个页面都要引用
    但是可能一个页面用到的可能就是一个TicketX中的一个Hello
    而其他的asmx不久是白引用了吗并没有用到

    Namespace问题是这样的

    我的一些个service想写在另外一个webservice中

    如下
    namespace WebService1
    {
        /// <summary>
        /// Service1 的摘要说明
        /// </summary>
        [WebService(Namespace = "192.168.0.101"")]
        [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
        [ToolboxItem(false)]
        // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
        [System.Web.Script.Services.ScriptService]
        public class Service1 : System.Web.Services.WebService
        {
    
            [WebMethod]
            public string HelloWorld()
            {
                return "Hello World";
            }
        }
    }
    引用如下
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
        <title>无标题页</title>
         <script type="text/javascript">
        
          function pageLoad() {
         
           Service1.HelloWorld(aa);
          }
          function aa(a)
          {alert(a);}
          </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <asp:ScriptManager ID="ScriptManager1" runat="server">
            <Services >
            <asp:ServiceReference Path="192.168.0.101/Service1.asmx"  />
            </Services>
            </asp:ScriptManager>
        </div>
        </form>
    </body>
    </html>
    
    但是就是引用不到

    2009年4月17日 17:05
  • 我现在的一个解决方法就是
    将要引用的信息直接写在页面中
    <script language="javascript" type="text/javascript" src="<%=javaseript %>"></script>
    <script language="javascript" type="text/javascript" src="Ticket.asmx/js"></script>
    这样就可以在不同页面引用不同的asmx也不用管UserControl
    ——
    不过
    引用之后时不时出现(同样的页面有时有有时没有)

    Sys.ArgumentTypeException类型,Sys._Application的对象无法转换成
    类型Sys._Application
    参数名Instance
    但是功能和方法调用没有问题,我还在找她在什么时候会出现这个问题

    2009年4月21日 21:26
  • 白引用有什么问题,反正客户端可以缓存这个js的内容,如果你不是对性能有超高要求,你就不要管了。如果你一定要精确控制每一个页面引用哪些js,你就必须手动维护每个页面上的引用。
    Microsoft ASP.NET MVP
    2009年4月22日 13:23
    版主