2009-07-09 9 views
0

Webアプリケーションのルートに存在するファイルのURLを必要とするオブジェクトがあります。これがSystem.Web.Ui.Pageから継承されたオブジェクトであれば、httpRequestオブジェクトを使用します。しかし、このオブジェクトは私がこのURLを取得する方法を不明ではないので。呼び出すオブジェクトに応じて、URLは/something.htmまたは〜/ something.htmのいずれかになりますSystem.Web.Ui.Pageを継承しないオブジェクトからファイルのURLを取得します。

誰かが私に道を示すことができますか?ありがとう!

-Nick

答えて

0

ジョンが正しくなっています。 HttpContext.Current.Requestオブジェクトは、記述したとおりに使用できます。私は、あなたがUrlをルートだけまで探していると思います。言い換えれば、ページ名またはクエリ文字列paramsが存在する場合、それらを必要としません。

このルーチンは少し不快ですが、必要なものを提供する必要があります。 HttpContext.Current.Requestへの参照に注目してください。

private string UrlUpToRootWithNoPageReferenceOrQueryStringParameters() 
{ 
    string Port = HttpContext.Current.Request.ServerVariables["SERVER_PORT"]; 

    if (Port == null || Port == "80" || Port == "443") 
     Port = ""; 
    else 
     Port = ":" + Port; 

    string Protocol = HttpContext.Current.Request.ServerVariables["SERVER_PORT_SECURE"]; 

    if (Protocol == null || Protocol == "0") 
     Protocol = "http://"; 
    else 
     Protocol = "https://"; 

    return Protocol + Context.Request.ServerVariables["SERVER_NAME"] + Port + Context.Request.ApplicationPath; 
} 

希望するものを得るための方法がより短くなりますが、上記のルーチンも機能します。詳細については、Rick Strahl's Making Sense of ASP.NET Pathsをご覧ください。

2

は、私はあなたがこのためにHttpRequestを使用したい理由はわからないんだけど、あなたはHttpContext.Currentがnullでないと仮定して、HttpContext.Current.Requestを使用することができます。

+0

これは私が確信していない場所です。だから、これはオブジェクトの背後にあるコードではありません。だから私は私のクラス内からHTTPRequestをどのようにインスタンス化できるのか不明です。 – Nick

+0

これはインスタンス化ではありません。インスタンス化とは、クラスのインスタンスの作成です。私があなたに示したことは何も創造しません。 –

+0

私は認識しています。しかし、私はHTTPRequestオブジェクトを使用したい場合..私はそれのインスタンスを持っているだろう。このクラスを見ると、どのような議論が必要なのかは不明です。それは理にかなっていますか? – Nick

関連する問題