Как устранить причину ошибки 404 Not Found в веб-сервисе ASP.NET? - PullRequest
0 голосов
/ 19 июня 2019

У меня есть веб-служба ASP.NET с несколькими методами, которые используются веб-приложением ASP.NET. Одно решение содержит два (2) проекта для веб-службы и веб-приложения. Решение запускает веб-сервис при запуске. После запуска веб-службы я выбираю ...

Отладка> Начать новый экземпляр

... чтобы запустить веб-приложение.

Когда веб-приложение запускается, оно выполняет вызовы веб-службы. Я могу поразить точки останова, установленные в файле Global.asax.vb веб-службы для следующих пустых подпрограмм: Application_BeginRequest, Application_AuthenticateRequest и Application_Error. Я также установил точки останова для каждой функции, определенной в файле .asmx.vb веб-службы.

Веб-приложение выполняет следующий код до получения 404, возвращенного в WebServiceInterface.vb ...

Shared Sub New()
    Dim settings As appSettings = appSettingsHelper.loadWebServiceSettings(HttpRuntime.AppDomainAppPath)
    service = New WebService.WebService()
    service.Timeout = -1

    service.Url = settings.WebServiceURL
End Sub

... а затем эта функция вызывается из веб-приложения ...

Public Shared Function selectTasksForGridDisplay() As DataSet
    Dim currentUpdateDate As DateTime = service.selectTaskUpdateInfo()

    '<code to process returned DateTime from web server method>
End Function

... и затем эта функция вызывается в файле Reference.vb ...

<System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/selectTaskUpdateInfo", RequestNamespace:="http://tempuri.org/", ResponseNamespace:="http://tempuri.org/", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)>  _
    Public Function selectTaskUpdateInfo() As Date
        Dim results() As Object = Me.Invoke("selectTaskUpdateInfo", New Object(-1) {})
        Return CType(results(0),Date)
    End Function

После выполнения интерфейса "selectTaskUpdateInfo" веб-служба получает запрос в режиме отладки. Файл Global.asax.vb веб-службы достигает точек останова, но не попадает в файл WebService asmx.vb, где определен метод «selectTaskUpdateInfo».

Файл веб-службы Global.asax.vb содержит пустые подпрограммы, внутри которых есть только строки комментариев. Это проблема?

Imports System.Web.SessionState

Public Class Global_asax
    Inherits System.Web.HttpApplication

    Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
        'Fires when the application is started
    End Sub

    Sub Session_Start(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when the session is started
    End Sub

    Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires at the beginning of each request
    End Sub

    Sub Application_AuthenticateRequest(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires upon attempting to authenticate the use
    End Sub

    Sub Application_Error(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when an error occurs
    End Sub

    Sub Session_End(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when the session ends
    End Sub

    Sub Application_End(ByVal sender As Object, ByVal e As EventArgs)
        ' Fires when the application ends
    End Sub

End Class

Однако ни одна из точек разрыва файла .asmx.vb веб-службы не была достигнута. Это происходит, даже несмотря на то, что запрошенный веб-метод определен этим веб-сервисом.

Веб-сервис возвращает HTTP-статус только 404 - Не найдено, но я не знаю почему.

Существуют ли какие-либо настройки Visual Studio 2013, альтернативные точки останова или что-то еще, что может помочь определить, почему веб-служба возвращает состояние ошибки 404 - Не найдено?

...