9

これは以前に回答されたに違いないと確信していますが、解決策が見つからないため、他の人の解決策を誤解しているか、何か馬鹿なことをしようとしている可能性が高いと思います。

ユーザーがリボンのボタンをクリックして電子メールの内容を Web サイトに送信できる C# で Outlook 2010 用のアドインを作成しています。ボタンをクリックすると、Web サイトがデフォルトのブラウザーで開き、送信されたばかりのものを確認し、Web サイトで操作できるようになります。以下を使用して、URL のクエリ文字列を使用してこれを行うことができます。

System.Diagnostics.Process.Start("http://www.test.com?something=value");

しかし、送信できるデータ量の制限と乱雑な URL が、このアプローチを実行することを妨げています。明らかにより適しているので、これには HTTP POST を使用したいと思います。ただし、これを行うために私が見つけた方法では、投稿データを送信した後、ブラウザでページが開かないようです。

http://msdn.microsoft.com/en-us/library/debx8sh9.aspx

要約すると; ユーザーは、Outlook リボンのボタンをクリックし、Web ブラウザーを開いて、POST 経由で送信された電子メールの内容を表示できる必要があります。

編集:

そうです、私はそれを行う方法を見つけました。それはかなり醜いですが、うまくいきます! すべてのデータの非表示フィールドを含むフォームを含む一時的な .html ファイル (上記のように起動される) を作成し、JavaScript を使用してページの読み込み時に送信するだけです。

このソリューションは JavaScript に依存しており (<noscript>念のため [送信] ボタンがあります)、少し面倒に思えるので、私はあまり好きではありません。

4

3 に答える 3

3

Dropbox クライアントは、編集で述べたのと同じ方法でそれを行います。ただし、難読化も行います。つまり、URL 経由で送信されたハッシュを使用してデータを XOR します。

Dropbox の手順は次のとおりです。

  1. アプリ内:dropbox.com で認証に使用できるトークンを作成します。
  2. アプリ内: トークンを 16 進文字列 (A) に変換します。
  3. アプリ内: 同じ長さの安全なランダム 16 進文字列 (B) を作成します。
  4. アプリ内: C = A XOr B を計算します。
  5. アプリ内: 次の機能を持つ一時 HTML ファイルを作成します。
  6. 値 B を含む非表示の入力フィールド。
  7. dropbox.com へのログインに必要な入力フィールドが非表示の送信フォーム。
  8. URI からハッシュを読み取り、それを B で XOR し、結果を送信フォームの非表示フィールドに書き込む JS 関数。
  9. URI からハッシュを削除します。
  10. フォームを送信します。
  11. アプリ内: 標準ブラウザで一時 HTML ファイルを開き、C をハッシュとして URI の末尾に追加します。

ブラウザが HTML ファイルを開くと、非表示の入力フィールドと URI のハッシュから認証トークンが計算され、dropbox.com が開きます。そしてポイント5.4のために。ハッシュがなくなっているため、ブラウザーの戻るボタンを押して再度ログインすることはできません。

于 2015-12-07T10:34:12.617 に答える
1

そのようにソリューションを構築したかどうかはわかりません。代わりに、すべてのデータを Web サービスに投稿し (@Loci で説明されているように HttpWebRequest を使用するか、Visual Studio を使用してサービスをインポートするだけ)、データをデータベースに保存します (おそらく保留状態で)。次に、保留中のヘルプ チケットを表示するページに (Process.Start アプローチを使用して) ユーザーを誘導し、チケットを承認または破棄できるようにします。

もう少し手間がかかるように思えますが、やろうとしていることのアーキテクチャをクリーンアップする必要があります。さらに、クライアント側からフォーム ポストをトリガーする方法について心配する必要がないという利点もあります。

編集:

少なくとも、プレーンな ASMX Web サービスから始める必要がありますプロジェクトを右クリックして [サービス参照の追加] を選択すると、サービスを呼び出すためのプロキシ コードを生成できます。

于 2012-04-12T12:05:27.333 に答える