2009-05-19 15 views
1

VStudio.net 2003を使用してVBで書かれたWebアプリケーションが割り当てられました。ローカルホスト(VStudio 2008)でソースを設定しようとしています。 (私は実際の変更を開始する前に)現在のアプリケーションについて、私はデバッグをWebサービスプロジェクトのために働かせることはできません。Visual Studio 2008でWebサービスプロジェクトをデバッグできません

症状1:私はF11(stepInto)に私の実際のWebメソッドを呼び出すプロキシクラスをしようとすると

"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". 

これが起こります。

症状2:.asmxファイル内のブレークポイントをプリセットすると、呼び出されるステートメントのコードが機能しません(つまり、デバッガは単に停止しません)。

は、状況を説明してきたが、ここで私のVStudioソリューションが設定されている方法は次のとおりです。

サービス1を - VBから作成したプロジェクト - WEB - ASP.NET Webサービスアプリケーションテンプレート。このService1プロジェクトには、デバッグしたい主な.asmxソースコードが含まれています。 Windowsのから作成された別のプロジェクト - - コンパイルdefaultLanguage = "VB" デバッグ= "true" を

ProxyService1含まれているこのプロジェクトのWeb.config [VB]クラスライブラリテンプレートを。ここでform1.vbファイルが削除されました。私は "サービス参照の追加" - >ディスカバー(サービスのソリューション)を訪問し、 "互換性"セクションで "Web参照の追加"をクリックします。上記のService1を選択すると、WSservice1の「Web参照名」が割り当てられます。この結果、Reference.VBファイルが作成され、プロジェクトのbin \ Debugフォルダにある同じ名前のProxyService1クラス.DLLをビルドすると、このプロジェクトは、コンパイルdefaultLanguage =「VB」デバッグ=「true」を

Project1のではapp.configファイルしている - .aspxのとWebサービスを呼び出すことは.vbファイルとメインUIプロジェクト。 project1にはProxyService1.DLLへの参照があります。このプロジェクトのWeb.configには、コンパイルdefaultLanguage = "vb" debug = "true"が含まれています。私は/上記のstmt上の定義に行くRIGHTMOUSE場合は、ここでReference.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) 

:私は、おおよそ次のようになります。このプロジェクトと呼ばれるmessage.vb内のファイルのいずれかでブレークポイントに到着します私ProxyService1プロジェクトに:私が知っているIISで

<WebMethod(MessageName:="Get Message By Type")> _ 
Public Function GetMessageByType(ByVal iMsgType As Integer) As DataSet 
    con = New SqlConnection(sConnZipeee) 
    con.Open() 

Everyplaceに:完全性については

<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 

、ここで対応するWebMethod属性は、サービス1プロジェクトの.asmxというファイルでありますチェックし、プロジェクトのプロパティ内で、適切なデバッグ設定がチェックされているかどうかを確認しました。私はこれのように設定されている他のものをデバッグしましたが、私は本当にこの "解決策"で逃したことに固執しています。

答えて

0

私はWebサービスをデバッグするときに、通常、自分のプロパティで「外部アプリケーションからの要求を待つ」ように設定します。また、私は通常VSの2つのインスタンスでプロジェクトを実行します.1つはWebサービス用、もう1つはクライアント用です。私はwebserviceにブレークポイントを置くことができ、すべてのヒットと私は何が起こっているか見ることができます。

+0

OK、私は、Webサービスのプロパティでラジオボタン(以前は見たことがない)に気づき、それを選択しました。あなたがあなたのアプローチをどうやっているのか正確にはわからない:(1)自分の3つのプロジェクトでVSを起動してから、UIプロジェクトのブレークポイントで停止してwebservice(2)を呼び出す前にVSを同じ3つのプロジェクトと.asmxコード(この方法は上記と同じ方法で停止しません)。 また、VSプロジェクトのインスタンスが1つあり、UIプロジェクトに右マウスを置いて、デバッグ - >新しいインスタンスを起動し、デバッグが必要な各プロジェクトを開始します。それがあなたが意味するものなら、私にとってはうまくいかない。 –

+0

私は2つのVSのインスタンスを実行します...それぞれはデバッグを実行していますが、1つはwebserviceプロジェクトで開始し、もう1つはクライアントプロジェクトで開始しました。 – CSharpAtl

+0

VSインスタンスで説明したようにwebserviceをデバッグするだけで、クライアントコードを接続することができます....クライアントをデバッグしていない限り、デバッグ中であれば問題ありません。 – CSharpAtl

0

は、私は通常、私はデバッグ用コンソールアプリケーションを起動することができますクラスライブラリでデバッグするためのロジックを置く

+0

あなたは何を意味するのかよく分かりません。私は 'デバッグ'をクリックして 'プロセスにアタッチ'します。私はどのような選択をするかわからない、複雑な外観のダイアログボックスが表示されます。利用可能なプロセスからは、 aspnet_wp.exe devenv.exe vsjitdebugger.exe のいずれかを選択した後、どのようにブレークポイントに進むのですか? –

+0

ビジュアルスタジオでWebサービスプロジェクトを開き、[デバッグ] - > [アタッチ]をクリックして、表示されたダイアログボックスでaspnet_wp.exeを選択し、[アタッチ]ボタンをクリックします。 Webサービスにリクエストすると、ブレークポイントがあると実行されます –

+0

申し訳ありませんが、まだ不明です(私がここに表示されているものと一致しません..)。 私は3つのプロジェクトを持っています。どのように開始するか明確ではありません。私の.aspx Webアプリを起動しない限り、aspnet_wp.exeというプロセスはありません。しかし、私はそれを開始し、デバッグ/ 'プロセスにアタッチ'に行くと、エントリは淡色表示(無効)と同様に 'アタッチ'ボタンです。しかし、Webサービスプロジェクトの.asmxファイルのブレークポイントstmtでデバッガを停止させることはできません。 –

0

ASPNET_WP.EXEプロセスを実行する上でデバッガをアタッチしてみてください。This linkは、サービスとしてデバッグする必要がある場合にも便利です。

+0

注:上のリンクは、WebサービスではなくWindowsサービスのデバッグ用です。 – DeveloperDan

1

VS2008/.NET3.5アプリケーションから.NET4 Webサービスをデバッグする方法を探している場合は、VS2010でサービスを開始し、サービスにブレークポイントを設定してから、通常のVS2008からのアプリ。ブレークポイントがヒットします。

VS2010でサービスを実行しないと、上記のJohnのエラーが表示されます。

関連する問題