2009-03-06 18 views
1

Bir uygulamayı IIS6 sunucusuna dağıttım. Şimdilik joker haritalamayı kullanıyorum. Uygulamam geliştirme makinemde mükemmel çalışıyor, ancak sunucuya erişmeye çalıştığımda bazı sayfalar çalışıyor ve bazıları çalışmıyor.Resimlerim/komut dosyam neden asp.net mvc tarafından dağıtılmış sitede görünmeyecek?

Bu bana en büyük sorunu veren & betikleridir.

http://localhost/sdev/home/index URL'im var ve sayfalar ve komut dosyaları yüklenmediği sürece sayfalar düzgün görünüyor. Ben kaynağını görüntüleyebilir ve url baktığımızda görüyorum:

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

O url gitmek çalışırsanız, o

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

yerine

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

gitmek çalışır garip bir şey, bazı sayfalar iyi çalışır, örneğin:

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

Bunu düzeltmek için neler yapabileceğimiz hakkında bir fikrin var mı? Evet, Phil'in talimatlarını okudum ve doğru şekilde takip ettiğimi düşündüm ama belki bir şey özledim.

+0

çalıştıran MVC hangi sürümünü? RC1? RC1 Yenile? RC2? –

+0

RC2'yi çalıştırıyorum. –

cevap

1

Kullanım

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

URL'ler oluşturmak ve Tamam olmalıdır.

0

Aksine bunu daha:

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

yapın: belki böyle sesler beri

/sdev/Content/Images/logo.png 

Daha da iyisi, (/ SDEV) arkasında kodunuzda o URL ilk bölümünü oluşturur bölüm değişecektir (burada "sdev" sitenin geliştirme sürümü bir tür olduğunu ve üretim için URL'lerin önünde hiçbir "sdev" olmazdı?)

Neden olmasın İlk örnekte rk, tarayıcının sanki "sdev/home" dizininde "index" isimli bir dosyaya bakıyormuş gibi görmesidir. Yani iki dizinin yukarı çıkması sizi kök seviyesine getiriyor.

"/ sdev/ServiceCall/DivisionStep/ALB" için iyi çalışıyor, çünkü artık "/ sdev/ServiceCall/DivisionStep" dizininde "ALB" ye bakıyorsunuz ve iki seviyeye çıkıyor, "/SDEV"

+0

Ne söylediğini anlıyorum ama test ederken çalıştırdığım zaman neden pc'de iyi çalışıyor? Bu iis6 yüzünden mi? –

+0

Neden PC'nizde çalışacağına dair hiçbir fikrim yok. Olmamalıdır :) –

1

Sadece kullanabileceğiniz resimler için bazı yardımcılar yazdım.

(1) yalnızca using System.Web.Mvc; numaralı AppHelper adlı bir genel statik sınıf oluşturun ve bunu 'Yardımcılar' adlı MVC projenizdeki bir klasöre ekleyin.

(2) bu yöntemlerde kopyalama:

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) ..ve böyle kullanın: <% =Html.Image("small_pic_border","~/Content/Images/Home/office2_137x139.jpg","principal headshot","137","139") %>

Bu yöntem, sözü edilen liammclennan'ın Url.Content yöntemini kullanır. Ayrıca bazı iyi habbits zorlamak olmalıdır: komut dosyaları için vb

alternatif metin kullanmak gibi kullanın: Eğer <script type="text/javascript" src="<% =Url.Content("~/Scripts/mootools.js") %>"></script>