Asp.Net Ajax WebService и внутренняя ошибка 500 - PullRequest
2 голосов
/ 24 марта 2010

Я могу вызвать веб-службу прямо в браузер по следующему URL-адресу, и он вернется, и все, что я хочу:

http://localhost:64438/MySearchAutoComplete.asmx/GetCompletionList

Когда я добавляю его в autocompleteexetender на страницу Default.aspx, вот так:

<cc1:AutoCompleteExtender ID="AutoCompleteExtender1" 
                  TargetControlID="TextBox1" 
                  runat="server" 
                  ServiceMethod="GetCompletionList" 
                  ServicePath="http://localhost:64438/MySearchAutoComplete.asmx" 
                  CompletionSetCount="12"
                  MinimumPrefixLength="1" />

Страница загружается, у меня есть текстовое поле, но у меня появляется ошибка 500 каждый раз, когда я добавляю нажатие клавиши в текстовое поле. Я вижу ошибку в FireFox FireBug.

http://localhost:62702/   --->This is the webpage that load fine 

альтернативный текст http://clip2net.com/clip/m12122/1269451120-clip-2kb.png -> Это ошибка

Есть идеи? Я заметил, что мне нужно прикрепить процесс для отладки веб-сервиса, я тоже могу что-то сделать не так?

Редактировать (Просмотр событий)

Если я захожу в программу просмотра событий моей машины. Я вижу:

Exception information: 
    Exception type: InvalidOperationException 
    Exception message: Request format is unrecognized for URL unexpectedly ending in '/GetCompletionList'. 


    Thread information: 
    Thread ID: 8 
    Thread account name: MTL\daok 
    Is impersonating: False 
    Stack trace:    at     System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response)
   at System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath)
   at System.Web.HttpApplication.MapHttpHandler(HttpContext context, String requestType, VirtualPath path, String pathTranslated, Boolean useAppConfig)
   at System.Web.HttpApplication.MapHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()
   at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)

Мне также нужно сначала запустить проект веб-сервиса, затем я остановил его и запустил веб-проект, чтобы иметь возможность иметь и то, и другое. Веб-сервис все еще работает (я могу запустить его напрямую http://localhost:64438/MySearchAutoComplete.asmx?op=GetCompletionList), но на веб-странице у меня все еще есть эта ошибка 500.

Редактировать 2 (Web.config)

Добавление в проект веб-сервиса web.config:

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

Не решили проблему.

Редактировать 3 (Прямой вызов)

Вызов в Page_Load () одного и того же метода из WebService работает очень хорошо:

     string[] stuffs;
     stuffs = proxy.GetCompletionList("1", 10);
     MyList.DataSource = stuffs;
     MyList.DataBind();

Но это не работает с AutoCompleteExtender ...

Ответы [ 2 ]

6 голосов
/ 24 марта 2010

В журнале событий на веб-сервере (т.е. на вашем локальном компьютере) должно появиться более подробное сообщение об ошибке.

Добавьте это к своему web.config, я думаю

<webServices>
    <protocols>
        <add name="HttpGet"/>
        <add name="HttpPost"/>
    </protocols>
</webServices>
0 голосов
/ 07 октября 2018

Просто убедитесь, что вы раскомментировали [System.Web.Script.Services.ScriptService] чуть ниже WebServiceBinding в верхней части страницы класса веб-сервиса.

Это должно решить это. Если он все еще сохраняется, проверьте URL-адрес вашего SitePath и убедитесь, что он правильно укоренен в расположении веб-службы, добавив «~» перед URL-адресом, как показано ниже:

SitePath="~/Webservice.asmx"
...