Формат запроса непризнан для URL, неожиданно заканчивающегося

Это не вопрос - отправьте его здесь для справки:

При использовании WebService я получил следующую ошибку:

Формат запроса непризнан для URL, неожиданно заканчивающегося /myMethodName

236
18 марта '09 в 11:05
источник поделиться
12 ответов

Нашел решение на этот веб-сайт

Все, что вам нужно, это добавить в свой web.config следующий текст

<configuration>
  <system.web>
    <webServices>
      <protocols>
        <add name="HttpGet"/>
        <add name="HttpPost"/>
      </protocols>
    </webServices>
  </system.web>
</configuration>

Дополнительная информация от Microsoft

439
18 марта '09 в 11:05
источник

Связанные вопросы


Похожие вопросы

Несмотря на 90% всей информации, которую я нашел (пытаясь найти решение этой ошибки), я предлагаю добавить конфигурацию HttpGet и HttpPost, которая не работает для меня... и didn Мне все равно.

Мое приложение работает на множестве серверов (30+), и мне никогда не приходилось добавлять эту конфигурацию для любого из них. Либо версия приложения, работающего под .NET 2.0, либо .NET 4.0.

Решением для меня было перерегистрировать ASP.NET для IIS.

Для достижения этой цели я использовал следующую командную строку...

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\aspnet_regiis.exe -i
15
19 нояб. '13 в 14:31
источник

Убедитесь, что вы используете правильный метод: Post/Get, правильный тип контента и правильные параметры (данные).

$.ajax({
    type: "POST",
    url: "/ajax.asmx/GetNews",
    data: "{Lang:'tr'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (msg) { generateNews(msg); }
})
12
26 янв. '11 в 21:28
источник

Superb.

Случай 2 - если та же проблема может возникнуть), в моем случае проблема была вызвана следующей строкой:

<webServices>
  <protocols>
    <remove name="Documentation"/>
  </protocols>
</webServices>

Он хорошо работает на сервере, так как вызовы выполняются непосредственно в функции webservice - однако не удастся, если вы запустите службу непосредственно из .Net в среде отладки и хотите протестировать запуск этой функции вручную.

7
05 февр. '13 в 9:26
источник

Для записи я получал эту ошибку, когда я переместил старое приложение с одного сервера на другой. Я добавил элементы <add name="HttpGet"/> <add name="HttpPost"/> в web.config, который изменил ошибку на:

System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at BitMeter2.DataBuffer.incrementCurrent(Int64 val)
   at BitMeter2.DataBuffer.WindOn(Int64 count, Int64 amount)
   at BitMeter2.DataHistory.windOnBuffer(DataBuffer buffer, Int64 totalAmount, Int32 increments)
   at BitMeter2.DataHistory.NewData(Int64 downloadValue, Int64 uploadValue)
   at BitMeter2.frmMain.tickProcessing(Boolean fromTimerEvent)

Чтобы исправить эту ошибку, мне пришлось добавить строки ScriptHandlerFactory в web.config:

  <system.webServer>
    <handlers>
      <remove name="ScriptHandlerFactory" />
      <add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    </handlers>
  </system.webServer>

Почему он работал без этих строк на одном веб-сервере, а не на другом, которого я не знаю.

2
01 апр. '14 в 14:22
источник

У меня не было проблемы при разработке в локальном хосте. Однако, как только я опубликовал веб-сервер, веб-сервис возвращал пустой (пустой) результат, и я видел ошибку в своих журналах.

Я исправил его, установив для моего ajax contentType:

"application/json; charset=utf-8"

и используя:

JSON.stringify()

на объекте, который я отправлял.

var postData = {data: myData};
$.ajax({
                type: "POST",
                url: "../MyService.asmx/MyMethod",
                data: JSON.stringify(postData), 
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    console.log(data);
                },
                dataType: "json"
            });
1
26 окт. '16 в 21:08
источник

Я использую следующую строку кода, чтобы исправить эту проблему. Напишите следующий код в файле web.config

<configuration>
    <system.web.extensions>
       <scripting>
       <webServices>
       <jsonSerialization maxJsonLength="50000000"/>
      </webServices>
     </scripting>
   </system.web.extensions>
</configuration>
1
26 апр. '16 в 13:39
источник

В моем случае у меня была перегрузка функции, которая вызывала это исключение, как только я изменил имя моей второй функции, она побежала нормально, предполагая, что веб-сервер не поддерживает перегрузку функции

0
13 апр. '15 в 8:25
источник

В html вы должны заключить вызов в форме с GET с чем-то вроде

<a href="/service/servicename.asmx/FunctionName/parameter=SomeValue">label</a>

Вы также можете использовать POST, действие - это местоположение веб-службы и ввод параметра через тег ввода.

Существуют также классы SOAP и прокси.

0
04 июня '12 в 17:18
источник

Я также получил эту ошибку с mod-mona apache. Похоже, что страница документации для webservice еще не реализована в Linux. Но webservice работает, несмотря на эту ошибку. Вы должны увидеть его, добавив ?WSDL в конец URL-адреса, т.е. http://localhost/WebService1.asmx?WSDL

0
19 дек. '16 в 1:05
источник

Убедитесь, что вы отключили пользовательские ошибки. Это может замаскировать исходную проблему в вашем коде:

изменить

<customErrors defaultRedirect="~/Error" mode="On">

к

<customErrors defaultRedirect="~/Error" mode="Off">
-1
15 мая '15 в 12:57
источник

a WebMethod, для которого требуется ContextKey,

[WebMethod]
public string[] GetValues(string prefixText, int count, string contextKey)

когда этот ключ не установлен, получил исключение.

Исправление, назначая ключ автозаполненияExtender.

ac.ContextKey = "myKey";
-1
28 сент. '15 в 18:51
источник

Посмотрите другие вопросы по меткам или Задайте вопрос