代码之家  ›  专栏  ›  技术社区  ›  jordan.baucke

使用HTTPGET返回的C#.NET web服务System.IndexAutoFrangeException异常

  •  4
  • jordan.baucke  · 技术社区  · 15 年前

        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文件:

    <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>
    
    1 回复  |  直到 15 年前
        1
  •  2
  •   jordan.baucke    15 年前

    原来,这个问题是由于一些糟糕的代码重分解和类/名称空间问题。

    here