質問

デフォルトのwebサイトが1つしかないiis5.1を使用しています,

私は2つのプロジェクトv2とv3を持っています

私のウェブサイトはv2プロジェクトを指し、いくつかのフォルダの画像、スタイルなどを持っています 今、私はプロジェクトv3をホストし、v2と同じフォルダ階層を持つこのウェブサイトの下に仮想ディレクトリを持っています

私が持っている両方のプロジェクトのホームページで

画像を保存します。gif"alt="ロゴ"/>

しかし、これはv2ディレクトリにある同じ画像を示していますが、両方のプロジェクトで異なる画像を表示するにはどうすればよいですか。「\」を使用してwebサイトのルートを取得しますが、そのwebサイトの下にある仮想ディレクトリのルートを取得するにはどうすればよいですか

役に立ちましたか?

解決

この静的メソッドは、アプリケーションのルートフォルダへのフルHTTPパス(Webサイトまたは仮想ディレクトリ)を返します。

public static string GetAppRootUrl(bool endSlash) { 
   string host = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority);
   string appRootUrl = HttpContext.Current.Request.ApplicationPath;
   if (!appRootUrl.EndsWith("/")) //a virtual
   {
       appRootUrl += "/";
   }
   if (!endSlash)
   {
       appRootUrl = appRootUrl.Substring(0, appRootUrl.Length - 1);
   }
   return host + appRootUrl;
}
.

だから、あなたはあなたのページに書くことができます:

<img src="<%= Server.HtmlEncode(GetAppRootUrl(false)) %>/images/edlogo.gif" alt="logo"/>
.

他のヒント

相対urlを使用します。見る ここに 例えば、"画像/bg.jpg"ページ内"http://v2/default...html"を指します"http://v2/images/bg...jpg"ページ内の同じコードながら、"http://v2/v3/default...html"を指します"http://v2/v3/images/bg...jpg"

だからあなたのコードは次のようになります :

img src="images\edlogo.gif" alt="logo"/>

但し、不運な副作用はリンクを壊さないであなたのウェブサイトの登録簿構造であなたのホームページを動かすことができないことである。

しかし、なぜこの種のセットアップを選択するのか興味がありますか?V3をwebサイトにして、v2と同じディレクトリレベルに配置する方が簡単ではないでしょうか?

あなたの投稿から欠けている何かがあります、あなたはそれを投稿することができますか?

相対パスを使用することができます

 <img src="../images/edlogo.gif" alt="logo"/>
.

あなたのコードサンプルは常にルートディレクトリからそれを取得します。

は、HttpRuntime.AppDomainAppVirtualPathまたはRequest.ApplicationPathを使用できます。

Page.ResolveUrl("~")が有用です。

仮想ディレクトリの使用例 / v2

    HttpRuntime.AppDomainAppVirtualPath = /v2
    Request.ApplicationPath = /v2
    Request.FilePath = /v2/Inicio.aspx
    GetAppRootUrl(false) = http://localhost:2029/v2
    Page.ResolveUrl("~") = /v2/
.

レビュー system.web.virtualpathutility クラス&メソッド(.NET 2.0以降)

http://msdn.microsoft.com/en-US / Library / System.Web.VirtualPathUtility.aspx

レビュー system.web.httpreequest オブジェクト

http://msdn.microsoft.com/en-us/library/system.web.httprequest.filepath(v=vs.100).aspx

Public Function GetRoot() As String
    Return System.Web.VirtualPathUtility.MakeRelative(Request.FilePath, Request.ApplicationPath)
End Function
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top