سؤال

لقد قمت بإعداد هذا المثال خدمة الويب للتحقيق في مصدر خطأي:

    namespace userControlPanel.webservice
{
    /// <summary>
    /// Summary description for WebService1
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    [System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {
        [WebMethod]
        [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
        public OutputData1 AjaxGetMore(InputData1 input)
        {
            return new OutputData1()
            {
                id = input.id,
                message = "it's work!",
                myInt = input.myInt + 1
            };
        }

    }
    public class OutputData1
    {
        public string id { get; set; }
        public string message { get; set; }
        public int myInt { get; set; }
    }
    public class InputData1
    {
        public string id { get; set; }
        public int myInt { get; set; }
    }

}

يعتمد على مثال هنا

لذلك حاولت جلب نتيجة هنا:

http://localhost:57109/webservice/WebService1.asmx/AjaxGet?id=li1234

وأحصل على النتيجة ،

 System.IndexOutOfRangeException: Index was outside the bounds of the array
   at System.Web.Services.Protocols.HttpServerType..ctor(Type type)
   at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
   at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

لذا ، أفترض أنه Web.Config أليس كذلك؟ لذلك قمت بتطبيق الإعداد المقترح (PS ، لقد قمت أيضًا بإنشاء خدمة ويب HTTP-Post وتعمل بشكل رائع)

من web.config:

<webServices>
      <protocols>
        <add name="HttpPost"/>
        <add name="HttpPostLocalhost"/>
        <add name="HttpGet"/>
      </protocols>
    </webServices>

    <httpHandlers>
      <add verb="*" path="*.asmx" type="System.Web.Script.Services.ScriptHandlerFactory" validate="false"/>
    </httpHandlers>
  </system.web>
هل كانت مفيدة؟

المحلول

تبين أن هذه المشكلة كانت نتيجة لبعض مشكلات إعادة صياغة التعليمات البرمجية ومساحة الفئة/الاسم من جانبي.

أيضًا ، أود أن نلاحظ أن البقاء بعيدًا عن httpget عند استخدام خدمات الويب jQuery هو فكرة جيدة ، وإعادة المعلومات التي قرأتها هنا

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top