امروز از ASP.NET FriendlyUrls که دوست عزیزمون به اشتراک گذاشتن استفاده میکردم ( اینجا ) و در صفحه اول سایتم مجبور بودم با استفاده از JSON یک متد را از صفحه Defaul.aspx صدا بزنم که کد زیر را نوشتم:
هنگام کار، alert ایی بر روی صفحه ظاهر میشد و خطای 401 Unauthorized را نمایش میداد. حتی آدرس را به صورت /Default/MyMethod امتحان کردم باز هم خطا داد و متد را شناسایی نمیکرد.به جای این کار کد زیر را در web.config اضافه کردم:
و خدا را شکر مشکل برطرف شد.
$.ajax({ type: "POST", url: "/Default.aspx/MyMethod", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", async: true, cache: true, success: function (data) { $("#plandata").html(data.d); }, error: function (x, e) { alert("The call to the server side failed. " + x.responseText); } });
<system.web.extensions><scripting><webServices><authenticationService enabled="true" /></webServices></scripting></system.web.extensions>
با استفاده از راه حل مطلب اینجا، به جای صفحه aspx یک صفحه WebService به پروژه اضافه و متدها را به آن جا منتقل کردم. نتیجه کد به شرح زیر شد:
$.ajax({ type: "POST", url: "/websrv.asmx/MyMethod", data: "{}", contentType: "application/json; charset=utf-8", dataType: "json", async: true, cache: true, success: function (data) { $("#plandata").html(data.d); }, error: function (x, e) { alert("The call to the server side failed. " + x.responseText); } });