助けて下さい! ASMX Web サービスに接続するにはどうしたらいいのですか?

引き続き、米国のサポートチームで公開している Blog の翻訳を紹介させてください。もちろん、Windows ストア アプリからも  ASP.NET Web サービス (ASMX サービス) を使うことができます。今回は Windows ストア アプリで ASMX Web サービスを使うための初歩についてまとめた記事を翻訳してみたいと思います。 Help me! How do I connect to an ASMX web service? MSDN フォーラムのモデレータとして、Windows ストア アプリからの、さらには最近の Windows Phone 開発の Windows ストア ソリューション チームへの統合に伴い、Windows Phone 8アプリからの、Web サービスのメソッドを初期化し、呼び出し、認証する方法についての問い合わせを、私は多数受け付けました。このブログではASMX Web サービスをモバイル アプリから使用する方法について説明します。   ASMX Web サービス ASMX Web サービスが現れてから久しく今では広く使われています。このサービスでは SOAP 構造 (XML…


HttpClient を使って JSON データを POST する方法

Windows ストアアプリと Windows Phone アプリのサポートチームで公開している Blog のうち、ページビューが多いいくつかの記事を日本語に翻訳しています。 今回は HttpClient クラスを使って JSON (JavaScript Object Notation) を送信する方法についてまとめた記事を紹介します。 How to use HttpClient to post JSON data これはフォーラムでよく訊かれるので、HttpClient クラスと DataContractJsonSerializer を使って JSON データをウェブサービスへ POST する方法を説明したいと思います。シリアル化した JSON オブジェクトをウェブのエンドポイントへ送るのはデータを HTTP や HTTPS を使って取得する一般的な方法で、これは WinJS の世界 (HTML5 / JavaScript の Windows ストアアプリを書く場合) では非常に簡単ではありますが、.NET アプリでHttpClient を使って行うやり方についてはあまりいい例が出回っていません。  ステップ 1 – 送るデータを見極める JSON データを WebService…


WebView について知っておくべき 10 項目

こんにちは。先日に引き続き、米国のサポートチームで公開している Blog の翻訳を紹介させてください。ご存じの通り Windows 8 から Windows ストア アプリケーションが利用できるようになり、私たちのチームでお問い合わせを担当しています。米国のサポートチームでは、Windows ストア アプリケーション専門のサポート チームがあり、こちらのチームでも Blog を運営していますが、その中でもページビューが多いいくつかの記事を日本語に翻訳してみたいと思います。   Ten Things You Need to Know About WebView こんにちは – 私はマイクロソフト Windows ストア開発者ソリューション チームのシニア エスカレーション エンジニアのマット・スモールです。 私は Release Preview の以前より Windows 8 に携わっており、ストアのフォーラムでは、C# のフォーラムに主に参加してきました。C# forum には WebView コントロールについての投稿が実に多かったので WebView について私が集積した知識をここでまとめておくとよいと思いました。この記事はかなり長くなりますので 10 項目にわけて説明します。 WebView は一般用途のブラウザではありません WebView は常に XAML の上にレンダリングされます WebView は…


Windows サービスアプリケーションから印刷する

みなさま、こんにちは。Platform SDK サポート チームの中野と申します。昨年からこのチームで Windows アプリケーション開発に関するお問い合わせを調査、回答しているのですが、「Windows サービス アプリケーションから印刷するには?」というお問い合わせを何度かいただきました。これまで、うまく説明されているドキュメントがなかったので皆様も困っていらっしゃるかと思います。最近になって、米国のサポートチームの Blog の記事にうまくまとめられているのを発見しましたので、これを日本語に翻訳してご紹介させていただきます。     Windows サービスからドキュメントをプリンターに出力させることができると望ましい場合がよくあります。Windows Win32 GDI API をつかってプリンターへ出力することはサポートされていますが、どのユーザー アカウントでサービスを実行するか、またそのアカウントがコンピューターにログインしたことがあるか、などいくつかの重要点を考慮する必要があります。 いくつかのシナリオは、バックグラウンドで動作してレポートをプリンターに印刷するような Windows サービスであったり、サーバー上でまれに発生するエラーを印刷する必要がある Windows サービスであったりします。 印刷するように設計された Windows サービスは、プリンターで文書を印刷するために Win32 GDI API を使用することができます。ただし、Windows サービスから印刷する際はいくつかの考慮すべき点があります。すべての出力ジョブを一人のユーザーから送ってよい場合、サービスをそのユーザーで実行することにより、そのユーザーがコンピューター上でアクセスできるすべてのプリンターが使用できます。その一方で、サービスの実行時に決定されるユーザーによって印刷する場合は、サービスは出力前に、LogonUser()、LoadUserProfile()、及び、ImpersonateLoggedOnUser() を呼ぶ必要があります。 プリンターのデバイス コンテキスト ハンドル取得して、そのハンドルを GDI+ のグラフィック コンストラクターに渡すことで GDI+ の出力をプリンターに送ることも可能ではあるものの、推奨されていません。GDI+ の関数やクラスを Windows サービス内で使用することはサポートされていません。Windows サービスからこれらの関数やクラスを使用すると、サービスのパフォーマンス低下や実行時の例外やエラーといった予期せぬ問題が発生する恐れがあります。   http://msdn.microsoft.com/en-us/library/windows/desktop/ms533798(v=VS.85).aspx さらに、Microsoft .NET でアプリケーションを開発しているのであれば、サービスや Web アプリケーションでは System.Drawing はサポートされていません。 System.Drawing…


GetTempFileName() をご利用いただく場合の注意点

Platform SDK (Windows SDK) サポートの平田です。11 月になり、ちらちら紅葉も見られるようになってきました。私の家は高尾に比較的近いところにあるため、この時期の高尾山を見に行くのを楽しみにしております。 本日は、GetTempFileName() をご紹介させてください。こちらの API は、一時ファイルを作成するときに便利な関数です。私も仕事柄サンプルを作ったりすることが多いのですが、大体作成するログファイルの名前は“log.tmp” です。当然、サンプルを動作させる場合に、同じファイルに上書きさせてしまったことがあります。その結果、出力した結果を後日確認できなくなったりして困ったりすることがありました。皆様も私と同じ失敗をしないように、この API を利用してみてください。 GetTempFileNamehttp://msdn.microsoft.com/ja-jp/library/cc429354.aspx UINTGetTempFileName(  LPCTSTR lpPathName, // ディレクトリ名  LPCTSTR lpPrefixString, // ファイル名の接頭辞  UINT uUnique, // 整数  LPTSTR lpTempFileName // ファイル名を格納するバッファ); 一時ファイル名を作成するための規則をそれぞれの引数で指定することができ、lpPathName には、出力を行うフォルダのパスを設定します。ちなみに、”.” と設定するとカレントディレクトリに出力されます。lpPrefixString には、ファイルの接頭辞をつけます。たとえば、hir と設定した場合、出力されるファイル名は、”hir1111.tmp”といった形で先頭3 文字を設定できます。uUnique に設定する値をもとに16 進文字列が生成されますが、0 を設定するのがこの API をご利用いただく一番のメリットとなります。0 を設定した場合には、一意なファイルが作成されます。0 を設定された場合は、結果は、hir1111.tmp だったり、hir1112.tmp だったりします。この結果の文字列が lpTempFileNameが指すバッファに書き込みが行われます。 こんな動作をするGetTempFileName() の動作メカニズムについて、以下にまとめてみました。   GetTempFileName() の動作メカニズム 一番利用されるシナリオと考えられる uUnique パラメーターにて…


[HOWTO] UMDH を用いたメモリリーク調査技法

Platform SDK (Windows SDK) サポートの平田です。私は、元 ADSI/ILM/FIM を担当しておりました。ひょっとするとhttp://blogs.technet.com/b/jpilmblg をご覧になられた方がいらっしゃるかもしれません。ぴろととして記事を書いておりましたが、今後は SDK サポートの平田として鋭意皆様のお役に立てればと考えております。 ところで先日、調布にあるオフィス近くのビアガーデンに行ってまいりました。思ったより混んでいたものの、運よく座ることができました。最近暑い日が多いので、外で飲むビールが美味しくて夏を全身で感じることができました。皆様も、水分と塩分をしっかり補給していただいて体調管理には十分お気を付けください。私たちも、気持ちも体もベストコンディションでお客様の問題を解決できるよう、日々体調管理に気を付けてまいります。 汗で水分がリークすると熱中症になるかなぁとか思い立ったので、本日は、メモリ リークに焦点を当てて調査を行う方法についてご紹介いたします。 概要説明多くの場合、アプリケーションのメモリ リーク箇所の特定は非常に難しいトラブルシューティングとなります。しかしながら、本日ご紹介させていただく User-Mode Dump Heap (以下、UMDH) というツールを用いることで、メモリ リークの発生箇所や、リークの大きさを特定することができます。私たちもお客様からのお問い合わせを調査する際に利用しているツールですので、ひょっとしたらメモリ リークしてるかも?という場合にぜひともご利用いただきたいツールです。 UMDH ツールは、Windows SDK に含まれる Debugging Tools for Windows の一部として提供されており、簡単に利用できるのですが、VirtualAlloc() や VirtualAllocEx() で確保されたメモリのメモリ リークは残念ながら検出することができません。その点だけお気を付けいただければ便利に使えるツールです。 ツールのインストール自分のプログラムにメモリ リークが疑われたら、まず、パフォーマンス モニターでメモリに関する情報を採取してみましょう。これには、パフォーマンス モニターの Process カテゴリの情報を採取し、 Private Bytes の値を監視します。この値が右肩上がりの傾向であれば、メモリ リークが発生している可能性あるため、より詳しく調査をするために UMDH の出番となります。 1)   UMDH のインストール方法以下の SDK をダウンロードしてインストールします。この時、[Debugging Tools for Windows]…


[障害情報] DataGridView を利用している場合に、処理応答が得られなくなる場合がある

Platform SDK (Windows SDK) サポートの平田です。本日は、System.Windows.Forms.DataGridView にて、応答が返ってこなくなってしまう問題についてご紹介いたします。本問題は製品の不具合による問題となります。 問題の概要 System.Windows.Forms.DataGridView を利用し、Edit を実施後フォーカスを外した場合に、応答が返らなくなる場合がございます。System.Windows.Forms.DataGridViewの規定では、拡張ウィンドウスタイルとして、WS_EX_CONTROLPARENTが設定されておりません。WS_EX_CONTROLPARENT が設定されていないことに起因して、ウィンドウ内のコントロールを順次確認する内部処理において、次のコントロールを適切に見つけることができず、結果、WM_GETDLGCODE のメッセージの処理が繰り返し行われ、アプリケーションがハングいたします。 -参考情報 Extended Window Styles http://msdn.microsoft.com/ja-jp/library/61fe4bte.aspx WS_EX_CONTROLPARENT   Allows the user to navigate amongthe child windows of the window by using the TAB key. タブキーにより、子ウィンドウ間を移動することを許可します 状況 マイクロソフトでは、この不具合を対象製品として記載されているマイクロソフト製品の不具合として認識しています。    対処方法 System.Windows.Forms.DataGridView を継承したクラスを用意し、ControlStyles.ContainerControlを設定します。 – コード例 public class myDataGridView : System.Windows.Forms.DataGridView {     public     myDataGridView()         : base()    …


[SDP 3][3fc3cd2a-d297-4e37-a501-35cf7303e436] Time Travel Tracing Diagnostic のログ採取方法

こんにちは、Platform SDK (Windows SDK) サポート チーム の小泉です。弊社では、日々発生するお客様の問題に対して様々な情報を採取し問題の解決を行っております。今回の投稿では、我々Microsoft のエンジニアがサポートを行う際に、お客様にご依頼する サポート診断プラットフォーム (SDP)のうちの一つであるTime Travel Tracing Diagnostic  ( TTT ) の採取方法についてご紹介したいと思います。TTT は、コンピューター上の任意のプログラムに対する実行時のトレース情報を収集する事ができ、特定環境や特定条件でしか再現ができない問題に対しては非常に有効な情報採取ツールとなります。現時点では、特定のサポート契約を結ばれた一部のお客様のみにご案内しているツールとはなりますが、トレース情報の採取から Microsoft への情報送付までをシームレスに行う事が可能です。Microsoft のエンジニアより情報採取のご依頼がありました際は、以下をご参考に是非ご協力いただけましたら幸いです。    TTT 採取方法  Microsoft のエンジニアより、メール等で案内された URL を開きます。 以下の画面が表示されたら「実行」ボタンを押します。 「SDP.***********.Run.exe」の実行に関する通知が下端に表示されますので、「実行」ボタンを押します。              デスクトップが暗転し、以下の「ユーザー アカウント制御」画面が表示された場合は、「はい」ボタンを押します。 以下の「マイクロソフト ソフトウェア ライセンス条項」を確認のうえ、「同意する」ボタンを押します。 以下の画面で採取対象のプロセスが実行されているコンピュータを選択します。Microsoft のエンジニアより特段の指示がない場合は、「このコンピュータ」を選択し、「次へ」ボタンを押します。 以下の画面が表示されましたら、「開始」ボタンを押します。 採取対象のプロセスの種類を選択します。Microsoft のエンジニアより特段の指示がない場合は、「プロセスの一覧から」を選択し、「次へ」ボタンを押します。*採取対象のプロセスが「実行中のアプリケーション プログラム」の場合は、「プロセスの一覧から」を選択します。*採取対象のプロセスが「実行中のサービス プログラム」の場合は、「サービスの一覧から」を選択します。*採取対象のプロセスが「未実行のプログラム」の場合は、「プロセスまたはサービスの名前を入力します」を選択します。*その他、モジュール名を直接指定する場合は、「一致するモジュールの名前を入力します」を選択します。 採取対象のプロセスを選択し、「次へ」ボタンを押します。 トレースを開始する場合は、「トレースを開始します。」ボタンを押します。*採取対象のプロセスを追加する場合は、「新しいターゲットを追加します」を選択します。*トレースをやめる場合は、「トレーシングのキャンセル」を選択します。 トレースのオプションを選択し、「次へ」ボタンを押します。Microsoft のエンジニアより特段の指示がない場合は、何も選択せず「次へ」ボタンを押します。 トレースの準備中の画面が表示されますので、以下の画面が表示されるまで、何もせず待ちます。 採取対象のプロセスにて、問題が発生する操作を行います。 以下の画面に戻り、「次へ」ボタンを押します。 Microsoft に送付するデータを選択し、「次へ」ボタンを押します。Microsoft のエンジニアより特段の指示がない場合は、全ての項目を選択し「次へ」ボタンを押します。 「送信」ボタンを押し、Microsoft にトレース情報を送付します。 以下の画面が表示されましたら、Microsoft へのトレース情報の送付が完了となります。…