2012-04-16 5 views
1

私はパスの一部として暗号化されたキーを渡す必要があるレストサービスを持っています。私はキーをurlencodeし、ブラウザに置いただけでうまくいきます。しかし、私のコードで私はWebRequest.Createと暗号化キーによって生成されたバックスラッシュを置き換えるように見えます。この結果、サービスはルートの一部であると考えられ、404で失敗します。これは.NETフレームワークの既知の欠陥ですか、何か不足していますか?かなり大きなもののようだ。WebRequest.パス内のバックスラッシュを暗号化解除します

編集:(簡易サンプルコード)

列キー= System.Web.HttpUtility.UrlEncode(TripleDESEncode( "sharedkey")); string uri = string.Format( "http://mydomail.com/deposit/{0}.{1}"、キー、 "json");

// URIがこのここhttp://mydomail.com/deposit/FHnapfF5yBCEKt3%2f3YOQ5g%3d%3d.json

のHttpWebRequest WebRequestクラス=(HttpWebRequestの)WebRequest.Create(URI)のように見えます。

//ここでは、HttpWebRequestのアドレスは//http://mydomail.com/deposit/FHnapfF5yBCEKt3/3YOQ5g%3d%3d.json

うまくいけば、このことができます...これです。値は、パスではなく、クエリ文字列の一部の一部である場合

+0

フレームワークではなく、間違ったエスケープ/エンコーディングの問題が考えられます。どのように鍵を送っていますか?コードを表示できますか? – Guffa

+0

が更新されました。ありがとう! – RockyMountainHigh

答えて

1

を[OK]を、私は私のクライアントとの妥協を作るアップ終了とストレートシリアライズのための暗号化をスキップベース64に。これは、私が通過しているものの性質のためにのみ受け入れられました。将来暗号化が必要になり、これを修正する必要がある大きな問題として認識しています。少なくとも回避策が提案されています。私が1つ見つけたら、私はそれを掲示するでしょう。

ありがとうございました!

ファイナルコード:

HttpUtil.UrlEncode(Convert.ToBase64String(Encoding.UTF8.GetBytes( "sharedKey")))。

0

UrlPathEncodeメソッドを使用します。

string key = System.Web.HttpUtility.UrlPathEncode(TripleDESEncode("sharedkey")); 
+0

その問題は、バックスラッシュが決して切除されないことです。私の場合、私が始めたところに戻ってきます。したがって、FHnapfF5yBCEKt3/3YOQ5g%3d%3dはパスの2つの部分として解釈されます。正しい? – RockyMountainHigh

関連する問題