2012-08-23 92 views
4

我剛剛將我的第一個MVC4項目從我的開發機器部署到了我的生產IIS7.5服務器,並且在使圖像正確顯示在服務器上時遇到了一些問題。MVC4項目圖像不顯示

這可能是IIS7中的權限問題?

<input type="image" src="Content/Images/Product.png" runat="server" /> 

enter image description here

當我運行此我的桌面上正確顯示圖像,但是當我部署到服務器我得到標準的斷鏈的形象。我已確認圖像在正確路徑的服務器上。

我也試圖改變SRC使用波浪號字符src="~/Content/Images/Product.png",但它仍然無法正常工作

這也開始以實現的site.css文件

<head> 
    <meta charset="utf-8" /> 
    <title>@ViewData("Title")</title> 
    <link href="@Url.Content("~/Content/Site.css")" rel="stylesheet" type="text/css" /> 
    <script src="@Url.Content("~/Scripts/jquery-1.6.2.min.js")" type="text/javascript"></script> 
    <script src="@Url.Content("~/Scripts/modernizr-2.0.6-development-only.js")" type="text/javascript"></script> 
</head> 

在Chrome中的加載我收到一個錯誤,說它沒有找到,它沒有在任何瀏覽器中加載,但我已經確認它在磁盤上。 enter image description here

奇怪的事情會在這裏......

的Web.Config

<?xml version="1.0"?> 
<!-- 
    For more information on how to configure your ASP.NET application, please visit 
    http://go.microsoft.com/fwlink/?LinkId=152368 
    --> 
<configuration> 
    <configSections> 
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> 
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=4.4.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> 
    </configSections> 
    <appSettings> 
    <add key="webpages:Version" value="1.0.0.0"/> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    </appSettings> 
    <system.web> 
    <compilation debug="true" targetFramework="4.0"/> 
    <authentication mode="Forms"> 
     <forms loginUrl="~/Account/LogOn" timeout="2880"/> 
    </authentication> 
    <pages controlRenderingCompatibilityVersion="4.0"> 
     <namespaces> 
     <add namespace="System.Web.Helpers"/> 
     <add namespace="System.Web.Mvc"/> 
     <add namespace="System.Web.Mvc.Ajax"/> 
     <add namespace="System.Web.Mvc.Html"/> 
     <add namespace="System.Web.Routing"/> 
     <add namespace="System.Web.WebPages"/> 
     </namespaces> 
    </pages> 
    <profile defaultProvider="DefaultProfileProvider"> 
     <providers> 
     <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/"/> 
     </providers> 
    </profile> 
    <membership defaultProvider="DefaultMembershipProvider"> 
     <providers> 
     <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/"/> 
     </providers> 
    </membership> 
    <roleManager defaultProvider="DefaultRoleProvider"> 
     <providers> 
     <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" applicationName="/"/> 
     </providers> 
    </roleManager> 
    <sessionState mode="InProc" customProvider="DefaultSessionProvider"> 
     <providers> 
     <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection"/> 
     </providers> 
    </sessionState> 
    </system.web> 
    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false"/> 
    <modules runAllManagedModulesForAllRequests="true"/> 
    </system.webServer> 
    <runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35"/> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0"/> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 
    <entityFramework> 
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework"/> 
    </entityFramework> 
    <connectionStrings> 
    <add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-QSmartRectification-20120731104636;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-QSmartRectification-20120731104636.mdf"/> 
    </connectionStrings> 
    <system.serviceModel> 
    <bindings> 
     <basicHttpBinding> 
     <binding name="Synchronise" /> 
     </basicHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="http://172.30.66.20/QSmart/Synchronise/" binding="basicHttpBinding" 
     bindingConfiguration="Synchronise" contract="QSmartRectificationProvider.ISyncProvider" 
     name="Synchronise" /> 
    </client> 
    </system.serviceModel> 
</configuration> 
+0

當你在看圖片鏈接,它看起來對嗎? –

+1

嘗試'src =「〜/ Content ...」 - 絕對路徑,以'〜/'開頭。 – Rolice

+0

不,如果我不使用代字號,我會得到缺少虛擬路徑別名的http://rociis21/Content/Images/Product.png。使用tilda會給我提供http://rociis21/~/Content/Images/Product.png –

回答

7

這可能是絕對路徑的問題。如果頁面是一個視圖ActionResult並應用默認路由規則,那麼您可以嘗試使用「../../content/product.png」。或者,您可以使用helper @ Url.Content(「〜/ content/product.png」)。您可以隨時使用瀏覽器檢查絕對路徑。

還檢查您的路由規則,看看它是否將內容文件夾映射到控制器。

+0

嘗試了他們兩個,雖然URL.Content再次在我的機器上工作,它不能在服務器上工作。 –

+0

嗨菲爾,你能通過在瀏覽器中手動輸入絕對URL來獲取圖像嗎?即'http:// yoursever /文件夾/ yourApp/content/product.png' – Ben

0

你在哪裏打電話的形象呢? 如果你是在「視圖」文件夾中的一個,你應該嘗試 src="../../Content/Images/Product.png"

注:每個..意味着一個文件夾了。

+0

我確實嘗試了視圖中的完整相對路徑(src =「../../ Content/Images/Product.png」)。再次,這在我的機器上工作,但部署到服務器,它不.. –

0

您是否嘗試在前面加前綴「/」?

<input type="image" src="/Content/Images/Product.png" runat="server" /> 

還有一個猜測是,你可能已經設置RouteExistingFiles屬性作爲路由真正正因爲如此CSS和圖像不加載了。

+0

試過,沒有喜悅。想知道它是VS2012 RC還是MVC 4的bug? –

+0

你可以發佈你的路由代碼嗎?你是否將RouteExistingFiles設置爲true? – VJAI

0

您可以訪問它作爲 server.MapPath("Images")+yourPhotoMappath(".")+\\Images\\+ yourPhoto