2009-03-06 5 views
1

私はIIS6サーバーにアプリケーションをデプロイしました。今のところ、私はワイルドカードマッピングを使用しています。私のアプリケーションは、私の開発マシンで完璧に動作しますが、サーバー上でアクセスしようとすると、一部のページが動作し、一部のページは動作しません。なぜ私の画像/スクリプトasp.net mvc展開サイトに表示されませんか?

私に最大の問題を与えているのは&の画像です。

私はhttp://localhost/sdev/home/indexというURLを持っており、画像とスクリプトが読み込まれない限り、ページは正常に表示されます。私はソースを表示し、私が見るURLを見てみると:

../../Content/Images/logo.png 

私はそのURLに移動しようとすると、それは

http://localhost/content/images/logo.png 

代わりの

http://localhost/sdev/content/images/logo.png 

に行くことにしよう奇妙なことは、いくつかのページが正常に動作することです:

http://localhost/sdev/ServiceCall/DivisionStep/ALB?type=fsr 

私はこれを解決するために何ができるのですか?はい、私はPhilの指示を読んできましたが、私はそれらを正しく追っていると思っていました。

+0

を実行しているMVCのどのバージョン? RC1? RC1リフレッシュ? RC2? –

+0

私はRC2を実行しています。 –

答えて

1

使用

<%= Url.Content("~/Content/Images/logo.png") %> 

URLを生成し、[OK]をする必要があります。

0

よりもむしろこれをやって:

../../Content/Images/logo.png 

この操作を行います。それは多分そのように聞こえるので、後ろのあなたのコードで(/ sdev)そのURLの最初の部分を生成し、さらに良い

/sdev/Content/Images/logo.png 

を一部は変更されます(私はここで "sdev"はサイトの開発版のようなもので、URLの前に "sdev"はありません)。

理由はありません最初の例のrkは、ブラウザが "sdev/home"ディレクトリの "index"という名前のファイルを見ているかのようにブラウザに表示されます。 2つのディレクトリを上に移動すると、ルートレベルに移動します。

"/ sdev/ServiceCall/DivisionStep/ALB"ではうまくいきます。 "/ sdev/ServiceCall/DivisionStep"ディレクトリの "ALB"を見ているので、2段階に進むと "/sdev」

+0

私はあなたが言っていることを理解していますが、私はテスト中にそれを実行すると、なぜ私のPC上で正常に動作しますか?それはiis6のためですか? –

+0

私はそれがあなたのPC上でうまくいくのか分かりません。それはないはず:) –

1

私はちょうど使用できるイメージのためのいくつかのヘルパーを書いています。

(1)単にusing System.Web.Mvc;でAppHelperという静的静的クラスを作成し、これをMVCプロジェクトの「ヘルパー」というフォルダに追加するだけです。

(2)これらの方法でコピー:

public static string Image(this HtmlHelper helper, 
     string classText, string sourcePath, string altText, string width, string height) 
    { 
     return Image(helper, classText, sourcePath, altText, width, height, null); 
    } 
public static string Image(this HtmlHelper helper, 
     string classText, string sourcePath, string altText, string width, string height, object htmlAttributes) 
    { 
     StringBuilder sb = new StringBuilder(); 
     if (htmlAttributes != null) 
      foreach (PropertyInfo p in htmlAttributes.GetType().GetProperties()) 
       sb.AppendFormat(@" {0}=""{1}""", p.Name, p.GetValue(htmlAttributes, null).ToString()); 

     if (htmlAttributes == null) 
      return String.Format(@"<img{0} src=""{1}"" alt=""{2}"" width=""{3}"" height=""{4}"" />", 
       String.IsNullOrEmpty(classText) ? String.Empty : String.Format(@" class=""{0}""", classText), 
       (new UrlHelper(helper.ViewContext.RequestContext)).Content(sourcePath), 
       altText, width, height); 
     else 
      return String.Format(@"<img{0} src=""{1}"" alt=""{2}"" width=""{3}"" height=""{4}""{5} />", 
       String.IsNullOrEmpty(classText) ? String.Empty : String.Format(@" class=""{0}""", classText), 
       (new UrlHelper(helper.ViewContext.RequestContext)).Content(sourcePath), 
       altText, width, height, sb.ToString()); 
    } 

(3).. <% =Html.Image("small_pic_border","~/Content/Images/Home/office2_137x139.jpg","principal headshot","137","139") %>

このメソッドは、liammclennanが指摘したUrl.Contentメソッドを使用します。また、いくつかの良いhabbitsにあなたを強制する必要があります。スクリプトの場合など

代替テキストを使用してのように使用します。あなたは <script type="text/javascript" src="<% =Url.Content("~/Scripts/mootools.js") %>"></script>

関連する問題