0

ASP.Net Request.Urlでは、SWFAddressによって生成されたディープリンクURLを取得できないことを認識しています。

http://www.mysite.com/Default.aspx#/6/

ASP.NetRequest.Urlはのみを返します

http://www.mysite.com/Default.aspx

1つの質問を見つけましたが、それはかなり古いものです-SWFAddressディープリンクとC#ライブラリ?

サーバーサイドからディープリンクURLにアクセスするためのライブラリ/テクニックはありますか?

ありがとう!

更新: /Default.aspx#/6/にアクセスすると次のようになります

? Request.Url
{http://localhost:56476/Default.aspx}
    AbsolutePath: "/Default.aspx"
    AbsoluteUri: "http://localhost:56476/Default.aspx"
    Authority: "localhost:56476"
    DnsSafeHost: "localhost"
    Fragment: ""
    Host: "localhost"
    HostNameType: Dns
    IsAbsoluteUri: true
    IsDefaultPort: false
    IsFile: false
    IsLoopback: true
    IsUnc: false
    LocalPath: "/Default.aspx"
    OriginalString: "http://localhost:56476/Default.aspx"
    PathAndQuery: "/Default.aspx"
    Port: 56476
    Query: ""
    Scheme: "http"
    Segments: {string[2]}
    UserEscaped: false
    UserInfo: ""

更新:質問を明確にしなかったことをお詫び申し上げます。ユーザーが次のURL(ほとんどの場合お気に入りに保存されている)をブラウザしている場合、サーバー側から完全なURLを取得したいと思います。そのURLに移動できます。それは本物のアプリです。

http://publ.com/Kgd3A5y#/13/zoomed

私の現在の解決策:クライアント側でイベント(たとえばページの読み込み)をサブスクライブします。クライアント側でURLを解析し、ajaxを使用してサーバーに戻ります。欠点は、2つのページの読み込みが作成されることです。

4

2 に答える 2

0

いいえ、これはディープリンクではありません。あなたは地元の錨について話している。まったく違うもの。

問題を再定義する必要があります。そうすれば、問題を理解できます。問題はディープリンクではありません。あなたの問題は、ローカルプログラムがローカル作業のためのローカル値(アンカー)を生成していることです。

サーバー側でこの情報が必要な場合(そして、表面上は新しい定義が必要な場合は、ローカル作業とデータはローカルであると想定されているように見えます)、次の2つのいずれかを実行する必要があります。

  1. これらの機能をローカルで実行しないように、要件と設計を再定義します。

  2. この情報を伝達するために、ローカルプロセスとサーバー間の通信を実装します。


コメントとこの問題についての考えに基づいて:

要件を次のように変更することで、ソリューションを簡単に実装できます(上記の#1)

このようなリンクを使用する代わりに

http://www.mysite.com/Default.aspx#/6/

このようなリンクを使用する

http://www.mysite.com/Default.aspx/6/

また

http://www.mysite.com/Default.aspx?6/

これらは実際の「ディープリンク」であり、サーバー側がそれらを見ることができ、ライブラリもそれらを処理できるようになります。(リンクしたドキュメントのクイックスキャンに基づいています。)

于 2013-02-15T16:24:41.730 に答える
0

#が付いたURLの一部はアンカーです。アンカーはクライアント側でのみ表示されます。たとえばJavaScriptを使用してクライアント側でアンカーを処理する必要があり、サーバー側で読み取り可能な適切なURLにリクエストを変換できます。

これはAsp.NetまたはC#固有ではありません。これは、すべてのサーバーテクノロジの標準的な動作です。

標準のRFC1808を引用するだけです:

フラグメント識別子(およびその前にある「#」)は、URLの一部とは見なされないことに注意してください。

更新

swfからサーバーにデータを送信する場合サーバー側でWebサービスを作成すると、swfがこのWebサービスと通信できるため、好きなデータを送信できます。

クライアント側のJavaScriptは、URLをWebサービスに送信するのにも適しています。

編集:

メイトあなたはすでにたくさんのリクエストを受け取りました:

81リクエスト❘1.37MB転送❘24.10秒(オンロード:2.41秒、DOMContentLoaded:2.17秒)

、したがって、非同期要求で数バイトを送信しても、違いはないと思います。

それに、あなたにできることはあまりないと思います。アンカーは完全にクライアント側のものであり、URLの一部ではありません。それを処理するには、クライアント側で処理し、クライアント側で処理する必要があります。サーバーからクライアントスクリプトをロードする必要があります。

Flashで利用可能なソケット通信がありますが、それはやり過ぎであり、あなたはswfコードにアクセスできないと述べました。

本当に私はあなたが持っているものを変える理由が見当たらず、同様に良い選択肢もありません。

于 2013-02-15T15:58:35.703 に答える