Я создал веб-службу (разновидности .asmx) и столкнулся с проблемой при включении пользовательской обработки ошибок; все отлично работает с отключенными пользовательскими ошибками. Когда я включаю их, и я делаю то же вызов веб-службы я получаю возвратило 405 статус с ниже ошибки:Пользовательские обработчики ошибок, бросающие 405 для asmx WebService
[HttpException (0x80004005): Request format is unrecognized.]
System.Web.Services.Protocols.WebServiceHandlerFactory.CoreGetHandler(Type type, HttpContext context, HttpRequest request, HttpResponse response) +489467
System.Web.Services.Protocols.WebServiceHandlerFactory.GetHandler(HttpContext context, String verb, String url, String filePath) +212
System.Web.Script.Services.ScriptHandlerFactory.GetHandler(HttpContext context, String requestType, String url, String pathTranslated) +120
System.Web.MaterializeHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +346
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +155
Моя декларация веб-сервиса заключается в следующем, и она вызывается через JavaScript, как POST к http://xxx/WebServices/TestService.asmx/MyMethod с param1 = xyz в теле.
namespace Website.WebServices
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[System.Web.Script.Services.ScriptService]
public class TestService : System.Web.Services.WebService
{
[WebMethod(EnableSession = true)]
[ScriptMethod(UseHttpGet = false, ResponseFormat = ResponseFormat.Json)]
public void MyMethod(string param1)
{
//...Do some important stuff
}
}
}
Для полноты моего заявления в Web.Config ниже:
<system.webServer>
...
<httpErrors errorMode="Custom" existingResponse="Replace">
<remove statusCode="404" subStatusCode="-1"/>
<error statusCode="404" path="/Error404.aspx" responseMode="ExecuteURL"/>
<remove statusCode="500" subStatusCode="-1"/>
<error statusCode="500" path="/Error.aspx" responseMode="ExecuteURL"/>
</httpErrors>
...
</system.webServer>
После этого через в Application_BeginRequest глобальной функции я могу видеть, что все идет в хорошо - я просто не могу видеть где это может пойти не так! Я также перешел непосредственно в файл asmx и отправлен через сгенерированную форму и получил ту же ошибку.
Это было протестировано и выполняется аналогично на машине IIS7, а также в моей машине с функцией IIS express dev.