2009-05-26 21 views
5

Visual Studio 2008デバッガで、環境内で実行するとデフォルトWebサイトのルートに接続できないという問題があります。WebサイトのルートにあるときにVisual Studioデバッガが接続されない

私はVS 2008 SP1上で動作する.NET 3.5 Webアプリケーションプロジェクトを持っています。私は "http://localhost/"のパスで "Use Local IIS Web server"にプロジェクトを設定しました。私は仮想ディレクトリを作成することができ、アプリケーションは正常にコンパイルされます。

私の問題は、IEの起動時にデバッガが接続されていないことです。私は "Attach to Process"を選択して "w3wp.exe"を選択することができ、うまくデバッグできます。これはPITAなので、なぜこれが自動的には添付されないのか誰かが分かっていれば不思議でしたか?

私はこの全く同じプロジェクトをVDの下で実行していましたが、デバッガが接続されていないという問題は一度もありませんでした。思考?

答えて

16

私が持っていた問題は、私は私のタグを囲まれた私のweb.configファイル内のタグを持っていたという事実に関連していました。これは明らかに、デバッガをアタッチしてからすぐにエラーやエラーを出さずにエラーを出します。

http://www.west-wind.com/WebLog/posts/466163.aspx

+0

私はあなたに何度もアップヴォートすることができたらよかった! –

+1

これは私を完全に救った。私の問題は、私がタグの周りにタグを含んでいたことです(私が言及しない理由で)、デバッガが失敗する原因となりました。それを削除すると問題が解決しました。ありがとうございました! – jeremcc

+0

これはちょうど私のお尻の大きな時間を節約! –

0

私は管理者アカウントを使用してVSを実行しようとします。

+0

私は管理者です – bechbd

0

WebアプリケーションはWebサイトのルートにあり、仮想ディレクトリは完全に同一ですか?
Webサイトプロジェクトのデバッグ設定が間違っている可能性があります。さまざまなデバッグ方法には特別なオプションがあります。そのうちの1つは、デバッガの即時接続とウェブサイトへの外部呼び出し(これはおそらく必要なものです)を待つことです。
web.configとIIS設定の違いは、動作が異なる理由もあります。

+0

IISを使用するように設定されたプロジェクトの設定はhttps://192.168.1.150に設定されており、正しいディレクトリを指すように構成されています – bechbd

+0

http://を開こうとしましたか? http:// localhost /?の代わりに192.168.1.150/? – okutane

0

私はVisual Studioでショートカットキーに接続するVSでこのマクロを使用しています。基本的にはあなたのために動作しますが、デバッガでw3wp.exeに接続します。自動車に付いて同様の問題を抱えていたので、私は時々期待した通りに働いていませんでした。私にとってはこれが治療法です。私はまた、Firefoxで通常テストするようにIEが自動的に起動するのを好まない。だから、このマクロは私が好きなIEの自動起動を引き起こさない。

Imports System 
Imports EnvDTE 
Imports EnvDTE80 
Imports EnvDTE90 
Imports System.Diagnostics 

Public Module AttachToWebServer 

    Public Sub AttachToWebServer() 

     Dim AspNetWp As String = "aspnet_wp.exe" 
     Dim W3WP As String = "w3wp.exe" 

     If Not (AttachToProcess(AspNetWp)) Then 
      If Not AttachToProcess(W3WP) Then 
       System.Windows.Forms.MessageBox.Show(String.Format("Process {0} or {1} Cannot Be Found", AspNetWp, W3WP), "Attach To Web Server Macro") 
      End If 
     End If 

    End Sub 

    Public Function AttachToProcess(ByVal ProcessName As String) As Boolean 
     Try 
      Dim ProcessFound As Boolean = False 
      Dim dbg2 As EnvDTE80.Debugger2 = DTE.Debugger 
      Dim trans As EnvDTE80.Transport = dbg2.Transports.Item("Default") 
      Dim dbgeng(10) As EnvDTE80.Engine 
      Dim indexer As Integer = 0 

      For Each myEngine As Engine In trans.Engines 
       'Possible values here could be "T-SQL","Native","Managed","Workflow" "Managed/Native", "Script" 
       If myEngine.Name.Equals("Managed") Then 
        dbgeng(indexer) = myEngine 
        indexer += 1 
       End If 
      Next 

      Dim processes As EnvDTE.Processes = dbg2.GetProcesses(trans, "localhost") 
      For Each Process As EnvDTE80.Process2 In processes 
       If Process.Name.Contains(ProcessName) Then 
        Process.Attach2(dbgeng) 
        ProcessFound = True 
       End If 
      Next 
      Return ProcessFound 
     Catch ex As System.Exception 
      MsgBox(ex.Message) 
     End Try 
    End Function 

End Module 
0

同じ嫌な振る舞いを持つ別の原因があります:ここで私はこれを理解するために中古品です。

複数のWebサイトプロジェクトを持つソリューションを使用している場合、これらのWebサイトプロジェクトの1つだけを起動プロジェクトとして設定していても、Visual Studioはこれらのプロジェクトをすべて開始します。ただし、ビジュアルスタジオは、スタートアッププロジェクトとして設定したWebサイトにのみアタッチします。

複数のスタートアッププロジェクトを持つようにソリューションを構成することもできます。ビジュアルスタジオがすべてのウェブサイトプロジェクトを開始するような方法でソリューションを設定すると、上記の状況と同じ状況になります。つまり、各ウェブサイトプロジェクトには実行中の開発者ウェブサーバーがありますが、スタジオはすべてのWebサーバーに接続されています。

関連する問題