4

私は2つの異なるプロジェクトを持っています:

  1. 実際の物理的な開発デバイスで実行している Windows Phone 8 アプリケーション。
  2. ASP.NET MVC WebAPI を含む 1 つの単純な WebRole エンドポイントを含む Azure クラウド サービス。

私の目標は単純です。
実際のデバイスから実行されている WP8 アプリケーションを使用して、Azure Emulator にデプロイされている WebAPI コントローラーに (HTTPClient を使用して) アクセスします。

DO 作業とは:

  1. アプリケーションは、Azure クラウドにデプロイされると、WebApi と正常に通信できます。
  2. IIS Expressアプリケーションは、 (Azure なしで)ローカルでホストされている場合に WebApi と正常に通信でき、この記事IIS Expressに従って設定が変更されます。

私が理解している限り、問題は、Azure Emulator が IP アドレス 127.0.0.1 でリッスンするように構成されていることです。これは、localhost ドメインの外部からはアクセスできません。

この正確な問題の解決策を提供するこの投稿を見つけましたが、それに従おうとすると、Azure Emulator にデプロイしようとしているときに不明な例外が発生します。

Azure Cloud Service と通信する WP8 アプリケーションをローカルでテストすることは本当に不可能ですか?

4

6 に答える 6

11

Phone Emulator または接続された物理 Windows Phone デバイスを Azure Emulator と通信させる方法を理解しました。

同じ要件に苦労している他の開発者のために、それが機能するために必要な手順を次に示します。

仮定:

  1. ホスティング マシンの IP アドレスを知っている。
  2. アクセスをブロックしているファイアウォールはありません
  3. IIS と Azure Emulator をシャットダウンし、構成の変更後に再起動する

Azure コンピューティング エミュレーター:

  1. "C:\Program Files\Microsoft SDKs\Windows Azure\Emulator\devfabric\DevFC.exe.config"編集用に開きます。
  2. "VipPoolStartIPAddress""VipPoolEndIPAddress"をホスティング マシンの IP (例: 192.168.1.100) に設定します。

Azure ストレージ エミュレーター:

  1. と の両方"C:\Program Files\Microsoft SDKs\Windows Azure\Emulator\devstore\DSServiceLDB.exe.config""C:\Program Files\Microsoft SDKs\Windows Azure\Emulator\devstore\DSServiceSQL.exe.config"編集用に開きます。
  2. ホスティング IP を使用するように両方servicesのファイルのセクションを設定します。
  3. Windows Azure storage emulator(既定の設定 ではなく) [ロール] 設定でストレージ接続文字列を構成します。
    • Role(ソリューション エクスプローラーの "Roles" フォルダーの下) を右クリックして、そのPropertiesページに入ります。タブをクリックしSettingsます。必ず設定を編集してくださいLocal(選択Service Configurationボックスで選択してください)。
    • ストレージの接続文字列を編集する
    • 資格情報を手動で入力する
    • アカウント名とアカウントキーはaccountsセクションの下に書かれていますDSServiceSQL.exe.config
    • ホスティング IP を使用して、カスタム エンドポイントを指定します。

ここに画像の説明を入力

楽しみ!

于 2013-08-19T13:24:06.520 に答える
4

これはすでに回答されていることは知っていますが、この問題に対する簡単な解決策はまだ投稿されていません。これは、LAN 全体で PC で実行されている Azure Storage Emulator (v4.3) と Mac を通信させるために行ったことです。

執筆時点では、Azure Storage Emulator の v4.3 を使用して Windows 10 バージョン 1511 を実行しています。

  1. Azure ストレージ エミュレーターがオフになっていることを確認します。これを行うには、Azure ストレージ エミュレーターのコマンド プロンプトを開きます。Azure Storage Emulatorスタートメニューに入力することで見つけることができます。開いたら、と入力しAzureStorageEmulator stopます。
  2. Azure ストレージ エミュレーターを実行しているコンピューターの IP アドレスを取得します。ipconfigすでに開いているコマンド プロンプトに入力します。IPV4 アドレスを見つけます - 次のようになります。192.168.1.xxx
  3. にあるファイルを開きます。C:\Program Files (x86)\Microsoft SDKs\Azure\Storage Emulator\AzureStorageEmulator.exe.config
  4. セクションで、各サービスを次のように編集しStorageEmulatorConfigます。明らかに、「xxx.xxx.xxx.xxx」を実際のIPアドレスに置き換えます...ただし、ポートは同じにしてください!!!ここに画像の説明を入力
  5. 次に、ファイアウォールの設定に進みます。StorageEmulatorConfig上記のセクションにリストされている 3 つのポートへのコンピューターの IP アドレスへのインバウンド接続を許可する必要があります。[コントロール パネル] -> [システムとセキュリティ] -> [Windows ファイアウォール] -> [詳細設定] -> [受信の規則]New Rule...で、画面の右側にある をクリックします。ウィザードを実行して、新しいルールを設定します。以下に何をすべきかを概説します。

ルールの種類: 選択Custom

プログラム:Customize...次に選択Apply to services only

プロトコルとポート: を に設定し、Protocol typeTCPに設定し Remote portSpecific Ports、入力ボックスに と入力します 10000-10002StorageEmulatorConfigこれにより、セクションで指定されたポートの範囲がこのルールに追加され、 それらのポートを介した着信接続が許可されます。

スコープ: このセクションはスキップして、簡単にするためにすべての IP アドレスに適用します。

アクション: 接続を許可する

Profile : 実行している接続プロファイルに応じて、適切なものを選択する必要があります。私の場合、私のコンピュータは家の LAN に接続されていたので、プライベート ネットワークに接続されていました。私は選択を解除Domainし、Public. 同じことをすることをお勧めします。

名前: Azure ストレージ エミュレーター

フィニッシュを押して完了です!...その部分で...

  1. 管理者特権のコマンド プロンプトを開き、次のコマンドを入力します (注: xxx.xxx.xxx.xxx を IP アドレスに置き換えてください!!!)。

    netsh http add urlacl url=http://xxx.xxx.xxx.xxx:10000/ user=everyone

    netsh http add urlacl url=http://xxx.xxx.xxx.xxx:10001/ user=everyone

    netsh http add urlacl url=http://xxx.xxx.xxx.xxx:10002/ user=everyone

  2. Azure ストレージ エミュレーターに接続しようとしているデバイスでブラウザーを開き、次の URL へのアクセスを試みます。

    http://xxx.xxx.xxx.xxx:10002/

    http://xxx.xxx.xxx.xxx:10002/

    http://xxx.xxx.xxx.xxx:10002/

応答が返ってきた場合は、次のようになります。

InvalidUri要求された URI は、サーバー上のリソースを表していません。

それならあなたは金色です...そうでない場合は、コメントを投稿してください。応答を更新します。

画像にアクセスするための URL を生成しているプロジェクトの .config ファイルで接続文字列を更新する必要があることに注意することが重要です (それを行っていると仮定します)。開発接続文字列のショートカットは使用できなくなりました。次のように更新する必要があります (xxx.xxx.xxx.xxx を上記の IP アドレスに置き換えます。

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;BlobEndpoint= http://xxx.xxx.xxx.xxx:10000/devstoreaccount1;TableEndpoint.xxx.xxx.http : // 10002/devstoreaccount1;QueueEndpoint=http://xxx.xxx.xxx.xxx:10001/devstoreaccount1 ;

これが AppSettings セクションにあり、\n でうまくフォーマットすると、文字列が壊れて、ストレージ コンポーネントはそれを有効な接続文字列として認識しません。だから、それを1つの長い厄介な文字列にしておいてください。

于 2016-05-04T20:39:41.263 に答える
1

この素晴らしい投稿のおかげで、私は方法を見つけました。

どうやら、私のローカル IP アドレス (例: 192.168.0.1) に送信されたトラフィックを 127.0.0.1 に再ルーティングすることで、Azure Cloud Emulator インスタンスに対して Windows Phone 8 Emulator を使用できるようになりました。

私がルーティングを行った方法は、PassPortという名前の単純なアプリを使用することですが、それに代わるものはたくさんあると思います。

于 2013-06-21T10:29:39.260 に答える