.NETで外部Webサービスを仲介するブリッジWebサービス
開発マシン
- OS
- WindowsXP Service Pack2
- 開発ソフト
- Visual Studio 2005
別ドメインのWebサービスをAJAXとかで呼び出して使うために.NETでブリッジ用のWebサービスを作った。外部のWebサービスをWebClientクラスのOpenReadメソッドで呼び出して結果をDataSetで返すというWebサービス。簡単簡単。
ところがこういう時に限って不可解なはまり方をしてしまう。
テスト用のコンソールアプリを作ってWebサービスを呼び出して実行。
System.Net.WebException はハンドルされませんでした。
Message="リモート サーバーに接続できません。"
Source="System"
StackTrace:
場所 System.Net.HttpWebRequest.GetRequestStream()
場所 System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object parameters)
場所 TestNetDictionaryWSConsole.DictionaryService.NetDictionary.EnglishToJapanese() 場所 C:\Data\1_test\NetDictionary\TestNetDictionaryWSConsole\Web References\DictionaryService\Reference.cs:行 79
場所 TestNetDictionaryWSConsole.Program.Main(String args) 場所 C:\Data\1_test\NetDictionary\TestNetDictionaryWSConsole\Program.cs:行 19
場所 System.AppDomain.nExecuteAssembly(Assembly assembly, String args)
場所 System.Runtime.Hosting.ManifestRunner.Run(Boolean checkAptModel)
場所 System.Runtime.Hosting.ManifestRunner.ExecuteAsAssembly()
場所 System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext, String activationCustomData)
場所 System.Runtime.Hosting.ApplicationActivator.CreateInstance(ActivationContext activationContext)
場所 Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssemblyDebugInZone()
場所 System.Threading.ThreadHelper.ThreadStart_Context(Object state)
場所 System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
場所 System.Threading.ThreadHelper.ThreadStart()
なんですか、これは。ブリッジ用のwebサービスはlocalhostだから見えないはずはないのだけれど。。 何度か試すと、10回中1回くらい動作する。気持ち悪い。
ソリューションエクスプローラからasmxファイルを右クリック→ブラウザで表示、とすると、webサービスの説明(http://localhost:2647/○○.asmx)は正常動作。メソッド名をクリックした画面も正常動作。しかし、そこで[起動]ボタンを押してテストをすると、
Internet Explorer ではこのページは表示できません
となる。
イベントビューアを見てみる。
イベントの種類: エラー
イベント ソース: ASP.NET 2.0.50727.0
イベント カテゴリ: なし
イベント ID: 1000
説明:
aspnet_wp.exe (PID: 5120) が予期せずに停止しました。
なぜワーカープロセスが落ちている。。プログラム側から落とすことってできるのか??
IISサービス再起動してもダメ、マシン再起動してもダメ、Webサービスのタイムアウト長めにしても変わらず。VS2005はデバッグ時にポート番号使うのでファイヤーウォールOffにしてみたけどダメ。
しょうがない、別のOS、2003 ServerやVistaで試してみるか。うまく動いたらwebサービスとAJAXの連携の記事かけるかと期待していただけに残念。