Мне было назначено веб-приложение, написанное на VB с использованием VStudio.net 2003. Я пытаюсь настроить источник на своем локальном хосте (VStudio 2008), чтобы я мог изучить и узнать о текущем приложении (прежде чем я начну какое-либо реальное изменения), и я не могу заставить работать отладку для проекта (ов) веб-службы.
Симптом 1:
"Unable to automatically step into the server. The remote procedure could not be debugged.
This usually indicates that debugging has not been enabled on the server.
See help for more information".
Это происходит, когда я пытаюсь F11 (stepInto) прокси-класс, который вызывает мой настоящий веб-метод.
Симптом 2: Предварительная установка точки останова в моем коде файла .asmx для оператора, который будет вызван, не работает (то есть отладчик просто не останавливается).
Описав ситуацию, вот как настроено мое решение VStudio:
Service1 - проект, созданный из шаблона приложения веб-службы VB - WEB - ASP.NET; этот проект Service1 содержит мой основной исходный код .asmx, который я хочу отладить. Web.config для этого проекта содержит компиляцию defaultLanguage = "vb" debug = "true"
ProxyService1 - отдельный проект, созданный из Windows - шаблон библиотеки классов [VB]; здесь был удален файл form1.vb; Я посетил «Добавить справочник услуг» -> «Обнаружить» («Службы в решении»), а затем в разделе «Совместимость» нажимаю «Добавить веб-справку». Затем, выбрав вышеуказанный Service1, я назначаю ему «имя веб-ссылки» WSservice1. В результате получается файл Reference.VB, а при создании класса ProxyService1 .DLL с тем же именем в папке проектов bin \ Debug; этот проект имеет файл App.Config с компиляцией defaultLanguage = "vb" debug = "true"
Project1 - основной проект пользовательского интерфейса с файлами .aspx и .vb, которые вызывают веб-сервис; У проекта1 есть ссылка на ProxyService1.DLL; Web.config для этого проекта содержит компиляцию defaultLanguage = "vb" debug = "true". Я прихожу к точке останова в одном из файлов этого проекта, который называется message.vb и выглядит примерно так:
Public Class Message
Dim wsZipeee As New ProxyService1.WSservice1.myService
Dim dsMessage As DataSet
Public Function GetMessageByType(ByVal iMsgType As Integer) As DataSet
dsMessage = wsZipeee.GetMessageByType(iMsgType)
Если я правую / иду к определению в stmt выше, вот код в Reference.vb в моем проекте ProxyService1:
<System.Web.Services.Protocols.SoapDocumentMethodAttribute("http://tempuri.org/ZipeeeWebService/Zipeee/Get Message By Type", RequestElementName:="Get Message By Type", RequestNamespace:="http://tempuri.org/ZipeeeWebService/Zipeee", ResponseElementName:="Get Message By TypeResponse", ResponseNamespace:="http://tempuri.org/ZipeeeWebService/Zipeee", Use:=System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle:=System.Web.Services.Protocols.SoapParameterStyle.Wrapped)> _
Public Function GetMessageByType(ByVal iMsgType As Integer) As <System.Xml.Serialization.XmlElementAttribute("Get Message By TypeResult")> System.Data.DataSet
Dim results() As Object = Me.Invoke("GetMessageByType", New Object() {iMsgType})
Return CType(results(0),System.Data.DataSet)
End Function
Для полноты вот соответствующий веб-метод в файле .asmx проекта Service1:
<WebMethod(MessageName:="Get Message By Type")> _
Public Function GetMessageByType(ByVal iMsgType As Integer) As DataSet
con = New SqlConnection(sConnZipeee)
con.Open()
В IIS везде, где я знаю, проверять, и в свойствах проекта я проверял правильность настройки отладки, которую нужно проверить или установить. Я отлаживал другие вещи, которые настроены таким образом, но я действительно застрял в том, что упустил в этом «решении».