08년 08월 01일 금요일

8 1일 금요일 웹서비스& exception


2008
8 1일 금요일

오후 2:59

 

웹서비스 사용시 서버측 에러 처리

원격 함수의 마지막 인자로 전달할수 있다(사용 데이터 , 완료값을 처리할 함수 , 에러 발생시 함수)

Ex)    function OnError(result)

    {

    document.getElementById("output").innerHTML = "<b>" +

                                                 result.get_exceptionType() +

                                                 "</b>:" + "<br />" +

                                                 result.get_message() +

                                                 "<br />" +

                                                 result.get_stackTrace();

    }

 

페이지 메서드

해당 페이지의 코드파일에서 웹메서드 생성형식으로 생성하고

Ex)       [WebMethod]

        public static string SayHello(string name)

        {

            return "hi " + name;

        }

페이지에서 스크립트 메니져 속성중 EnablePageMethods = "true"

 

웹서비스로 구조체 데이터를 전달

[System.Web.Script.Services.GenerateScriptType(typeof(TYPE))]

 

웹메서드에서 세션을 사용

[WebMethod (EnableSession = true)]

 

공용괴지 않은 클래스를 상속할수 있게

HttpContext

 

member.cs

 

namespace AJAX

{

    public class Member

    {

        public string name;

        public string uid;

        public int age;

    }

}

 

 

 

Member.asmx

 

namespace AJAX

{

    /// <summary>

    /// Member1의 요약 설명입니다.

    /// </summary>

    [WebService(Namespace = "http://tempuri.org/")]

    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

    [ToolboxItem(false)]

    // ASP.NET AJAX를 사용하여 스크립트에서 이 웹 서비스를 호출하려면 다음 줄의 주석 처리를 제거합니다.

    [System.Web.Script.Services.ScriptService]

    [System.Web.Script.Services.GenerateScriptType(typeof(Member))]

    public class Member1 : System.Web.Services.WebService

    {

 

        [WebMethod]

        public List<Member> GetMembers(string uid)

        {

            List<Member> list = new List<Member>();

            Member m;

            m = new Member();

            m.name = "박카스";

            m.uid = "Junsae";

            m.age = 25;

            list.Add(m);

 

            m = new Member();

            m.name = "이만우";

            m.uid = "Manwo";

            m.age = 25;

            list.Add(m);

 

            m = new Member();

            m.name = "유무글";

            m.uid = "Moogle";

            m.age = 24;

            list.Add(m);

 

            //m = new Member();

            //m.name = "김태희";

            //m.uid = "Beautiful";

            //m.age = 24;

            //list.Add(m);

 

            return list;

        }

 

        [WebMethod(EnableSession=true)]

        public Member GetMember()

        {

            List<Member> list = GetMembers("");

                                          

            Member m = list.Where(e => e.name = HttpContext.Current.Session["name"].ToString())

                                .ElementAt(0);

            return m;                      

        }

    }

}

 

WebForm4.aspx

 

    <script type="text/javascript">

   

    function test()

    {

        AJAX.Member1.GetMember(OnComplete, onerror);

    }

   

    function OnComplete(result)

    {

        document.getElementById("Text1").value = result.name;

    }

   

    function OnError(result)

    {

        document.getElementById("Text1").innerHTML = "<b>" +

        result.get_exceptionType() + "</b>:" +

        result.get_message() + "<br />" +

        result.get_stackTrace();

    }

   

    </script>

</head>

<body>

    <form id="form1" runat="server">

    <asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">

    <Services>

    <asp:ServiceReference Path="~/Member.asmx" />

    </Services>

    </asp:ScriptManager>

    <div>

        <asp:Button ID="Button1" runat="server" Text="로그인" onclick="Button1_Click" />

    </div>

    </form>

    <p>

        <input id="Text1" type="text" /><input id="Button2" type="button"

            value="button" onclick="test()" /></p>

</body>

</html>

 

WebForm4.aspx.cs

 

namespace AJAX

{

    public partial class WebForm4 : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

 

        }

 

        protected void Button1_Click(object sender, EventArgs e)

        {

            Session["name"] = "김태희";

        }

 

        [WebMethod]

        public static string GetMessage(string name)

        {

            return "Hi" + name;

        }

    }

}

 

 

by 몬가있어 | 2008/08/06 16:51 | 닷넷수업정리 | 트랙백 | 덧글(0)

◀ 이전 페이지          다음 페이지 ▶