Невозможно отладить проект веб-службы в Visual Studio 2008 - PullRequest
1 голос
/ 19 мая 2009

Мне было назначено веб-приложение, написанное на 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 везде, где я знаю, проверять, и в свойствах проекта я проверял правильность настройки отладки, которую нужно проверить или установить. Я отлаживал другие вещи, которые настроены таким образом, но я действительно застрял в том, что упустил в этом «решении».

Ответы [ 4 ]

1 голос
/ 11 января 2012

Для информации - если вы узнали, как отлаживать веб-службу .NET4 из приложения VS2008 / .NET3.5, вам нужно запустить службу в VS2010, установить точку останова в службе, а затем запустить приложение от VS2008 как обычно. Точка останова будет достигнута.

Не запуская службу в VS2010, вы получите ошибку, описанную Джоном выше.

1 голос
/ 19 мая 2009

Когда я отлаживаю веб-сервисы, я обычно выбираю опцию «Не открывать страницу. Ждать запрос из внешнего приложения» в разделе «Интернет» в свойствах моего проекта ( подробнее здесь ). Я также обычно запускаю проект в 2 экземплярах VS, один для веб-сервиса и один для клиента. Я могу поставить точки останова в веб-сервисе, и все попадет, и я вижу, что происходит.

0 голосов
/ 19 мая 2009

Я обычно помещаю логику для отладки в библиотеку классов, которую я могу запустить с консольного приложения для отладки. Эта ссылка также будет полезна, если вы должны отлаживать как службу.

0 голосов
/ 19 мая 2009

попробуйте подключить отладчик при запуске процесса aspnet_wp.exe

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...