仮面's profile宇宙仮面の C# 研究室.Live SpacePhotosBlogListsMore ![]() | Help |
|
|
May 18 XML Web Service の呼び出しCPUの温度を取得する際、WebClient を使用した、非同期呼び出し。 なお、Silverlight 3 Beta では、linq がサポートされていないので動かない。 /////////// WebClient client = new WebClient(); string request = "<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\"> <soap:Body><CPUTemperatureStringResponse xmlns=\"http://tempuri.org/\"> <CPUTemperatureStringResult>float</CPUTemperatureStringResult> </CPUTemperatureStringResponse></soap:Body></soap:Envelope>"; client.Headers.Add(HttpRequestHeader.ContentType, "text/xml"); client.Headers.Add("SOAPAction", "http://tempuri.org/CPUTemperature"); client.UploadStringCompleted += delegate(Object sender2, UploadStringCompletedEventArgs ev) XDocument xmlHeadlines = XDocument.Parse(ev.Result); string temp = headlines.First().Value; TextBox1.Text = temp; client.UploadStringAsync(new Uri("http://localhost/SystemTemperature/Temperature.asmx"), request); May 06 CPUの温度取得に関するメモ6WinRing0 を利用した Web Service のビルド環境の構築まとめ (Vista 32bit版)
CPUの温度取得に関するメモ5Web Service から OpenLibSys を呼び出すと、InitializeOls(); を呼ぶところでOLS_DLL_DRIVER_NOT_FOUND エラーになってしまう。 この原因は、WinRing0.sys を Visual Studio のデバッグ環境で、Web Service から呼び出すときに、OlsDll.cpp の Initialize()関数の中で、ドライバーを呼び出すときのパスが、 “C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WinRing0.sys” になってしまうためであることが判明した。暫定で、その場所に WinRing0.sys をコピーして先に進んでみる。 次に、Web Service をローカルの IIS に発行してみると、ドライバーを呼び出すときのパスが今度は、 “c:\windows\system32\inetsrv\WinRing0.sys” になってしまい、ドライバーを探しに行ってエラーになってしまう。そこに、WinRing0.sys をコピーすることで、Web Service から OpenLibSys を呼び出せるようになった。 はまったメモ: WinRing0が LoadLibrary で呼ばれていて、Web Service からデバッグできないので、ビルド環境を作って、メッセージを埋め込んでデバッグするしかなかった。もう少しいい方法があるのかな・・・ そこで、WinRin0\dll をビルドしてたら、DEF ファイルが外出しになっていて、リンカオプションに def ファイルを追加する必要があった。 /DEF:"C:\Users\uchukamen\Desktop\WinRing0_1_3_0\source\dll\OlsApi.def" そこで、fprintf (stderr でと思ったが、出力先がないので、エラーを出せない。イベントログも面倒なので、とりあえず、ファイルにエラーメッセージを書き出した。 やっぱりワナがあった w ここまでくれば、あとは OpenLibSys も気にせず、管理者モードに移行する必要もなく、簡単にアプリができる。ただ、OpenLibSys 強力な分、セキュリティ上注意が必要。 ASP.NET で偽装する温度計を Web Service にしてなんてことを考えて、Administrator 権限が必要な OpenLibSys を Web Service 化するには、偽装しなければならない。その他、きっとはまるだろうと思いつつ、やっぱり引っかかりますね。 Web.config で <configuration> と追加して、実行すると、 '/' アプリケーションでサーバー エラーが発生しました。 構成にエラーがあります。説明: この要求を処理するために必要な構成ファイルの処理中にエラーが発生しました。以下のエラーの詳細を確認し、構成ファイルに変更を加えてください。 というエラーが発生。Vista では、Administrator アカウントが無効になっているので、 [管理ツール] → [ローカル セキュリティ ポリシー] これを有効にしてみた。すると、このエラーは、無事解決。 しかし、InitializeOls(); を呼ぶところで引っかかっている。サービス側なので、デバッグが厄介だな・・・ この原因は、WinRing0.sys を Visual Studio のデバッグ環境で、Web Service から呼び出すときに、OlsDll.cpp の Initialize()関数の中で、ドライバーを呼び出すときにディレクトリが、 “C:\Program Files\Common Files\Microsoft Shared\DevServer\9.0\WinRing0.sys” になってしまい、OLS_DLL_DRIVER_NOT_FOUND エラーになってしまう。暫定で、その場所に WinRing0.sys をコピーして先に進んでみる。 次に、Web Service をローカルの IIS に発行してみると、こんどは “c:\windows\system32\inetsrv\WinRing0.sys” を探しに行ってエラーになる。そこに、WinRing0.sys をコピーすることで、Web Service から OpenLibSys を呼び出せるようになった。 May 05 あれ? Vista IIS 7 で Web Service が動かない・・・温度計をWeb Serviceにしてしまおうかと思って、久々にWeb Service を作って、ローカルの Vista に発行してみたら、 「IIS 7.0 でホストされている Web サイトにアクセスすると、エラー メッセージ:"HTTP エラー 500.19-内部サーバー エラー"」 というエラーで Web Service が動かない。 http://support.microsoft.com/kb/942055/ja に対処方法が書かれていたので、その通りにしてみたが症状は変わらず。 あれれ? ということで、いろいろ調べていたら、[コントロール パネル] → [プログラムと機能] → [Windows の機能を有効化または無効化] → [アプリケーション開発機能] の ASP.NET のチェックがされていなかった。 VISTA を入れて、Visual Studio 2008 を標準インストールしただけで特に何もしていないはずなので、標準インストールでは ASP.NETは ON にならないのかな? このチェックを入れたら、無事動いた。 Windows Vista IIS で ASP.NET を動かすための設定は、 http://msdn.microsoft.com/ja-jp/library/aa964620.aspx に書かれています。エラーメッセージからサポートオンラインの情報を引いたのだけれど、その情報に惑わされてしまった。というわけで、またはまりそうなので、一応メモっておこう。January 26 ASP.NET ルーティング 続き on 2003 Serverこの前の ASP.NET ルーティングは、VS2008 + Vista ASP.NET開発サーバーであっさり動きました。 ところが、2003 Server で試してみると動かない。 ???ということで調べてみると、 IIS の Web サイトのプロパティ → ホームディレクトリ タブ → 構成ボタンを押し下げます。 すると、アプリケーションの構成ダイアログが表示されます。 ここで、ワイルドカード アプリケーション マップで、挿入ボンタンを押す。 c:\windows\microsoft.net\framework\v2.0.50727\aspnet_isapi.dll を指定し、 ファイルの存在を確認する チェックボックスを外す。 これにより該当しないファイル拡張子の場合、aspnet_isapi.dll で、ルーティングが追加されていないかどうか確認するようになりました。 August 25 HTML の圧縮TechEd 2007 でのセッションで、どのセッションか忘れてしまったが、HTMLのサイズを圧縮し、高速化するヒントとして2つ紹介されていた。WZero3のメモ帳にメモってあるだけで忘れそうなので、メモ。
October 01 Login.aspx がエラーになる次のエラーになった場合、ファイル名とクラス名がかぶっている ことが原因のようだ。 Source Error: Line 118: public login_aspx() { Line 119: string[] dependencies; Line 120: ((Login)(this)).AppRelativeVirtualPath = "~/Login.aspx"; Line 121: if ((global::ASP.login_aspx.@__initialized == false)) { Line 122: dependencies = new string[3]; Source File: c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files oot\23c2a77e\aa6cf731\App_Web_login.aspx.cdcab7d2.iei5x67s.0.cs Line: 120 http://geekswithblogs.net/azamsharp/archive/2006/05/31/80286.aspx Login.aspx のファイル名をリネームするだけでは クラス名はそのままなのでだめです。 Login.aspxのファイルを削除して別名で作成するか、 クラス名を変更する必要があります。 ASP.NET で Shift-JIS エンコードを使うASP.NET ではデフォルトで Unicode。 Shift-JISを使うには、Web.config で requestEncoding="Shift-JIS" responseEncoding="Shift-JIS" /> で Shift-JIS を指定する。 |
|
|