パスを別のドメインにマップできますが、アドレスバーに元のアドレスを保持したいと考えています。これをコード化する方法はありますか、それはIISにありますか?可能であれば、コード化された方法が好きです。別のドメインへのパスのマップ
私はhrefが "http://www.example.com/invproxy.aspx?id=1 & batch = 1"のようなリンクを持っています。 私はそのマップを "http://www.otherdomain.com/Files/TheFileRequest.aspx"にしたいと思います。
元のリクエストのクエリ文字列を使用してマップするパスを生成します。それはServer.TransferまたはResponse.Redirectで動作しますが、私はアドレスバーに依然として最初に要求されたURLを言うことを望みます。これは可能ですか?
おかげ
編集:私は問題が(おそらく最も経済的な方法を)解決したが、以下に、私はinvproxy.aspx
// Just test file, no code to select path yet.
string requestPath = "http://www.otherdomain.com/Files/TestFile.pdf";
// Setup the request for the PDF File
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(requestPath);
// Get the response from otherdomain.com
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
// Assign the invproxy response the PDF ContentType
Response.ContentType = "application/pdf";
// Get the body of the response in a stream object
Stream s = resp.GetResponseStream();
// Create a byte array to be read into from the stream
byte[] buffer = new byte[resp.ContentLength];
int position = 0;
while (true)
{
//Read bytes one by one, slow but causes errors trying to read the whole thing.
//I need to use chunks here.
int b = s.ReadByte();
if (b == -1)
{
//This is the end of the stream
break;
}
else
{
//Set the byte at the current position to the value just read
buffer[position] = (byte)b;
//Advance the position by one.
position++;
}
}
//breakpoint debugging
string sa = Encoding.Default.GetString(buffer);
//Write the file to the invproxy response.
Response.BinaryWrite(buffer);
EDITのPage_Loadイベントで使用していたコードでいる:だけ完成した結果を追加するには、私のPDF文書をブラウザの新しいタブに表示します(互換性がある場合)。アドレスバーはhttp://www.example.com/invproxy?myquerystringです。
必要に応じて現在のURLにクエリ文字列パラメータと値を取得する方法をあなたに示すことotherdomain.comで生活してい同じサーバーか、そうでなければそれを制御していますか? –
はい、両方とも自分のVPSで動作しており、私は両方を制御しています。 –
私はおそらくあなたがしようとしていることを100%理解していませんでしたが、そのテクニックは現在のURLの部分を与えるべきです – MacGyver