2013-10-18 63 views
2

我上傳了一個.cshtml網站到surftown服務器,並且我在運行代碼時遇到了一些問題。但我在運行Razor代碼時遇到問題。剃鬚刀網站不能正常工作,所有dll都存在

這是網頁的呈現方式:(Default.cshtml)enter image description here

我已經檢查了內部通信問題。這是我的結果: enter image description here

但是爲什麼它不工作,我該如何解決它?

我聽說它可能是一個意見問題,但如何解決這個問題,如果是這樣的話?

我的網站文件夾樹:(有些文件太)

  • App_Code文件
  • 的App_Data
      • Microsoft.AspNet.Razor.2.0.20710.0
      • 個 Microsoft.Asp.Net.WebPages.2.0.20710.0
      • Microsoft.Asp.Net.WebPages.Administration.2.0.20710.0
      • Microsoft.Asp.Net.WebPages.Data.2.0.20710.0
      • Microsoft.Asp.Net.WebPages.WebData.2.0.20710.0
      • Microsoft.Web.Infrastructure.1.0.0.0
      • NuGet.Core.1.6.2
    • jQuery.2.0.3
      • 內容
        • 腳本
      • 工具
    • Microsoft.AspNet.Mvc.4.0.30506。0
      • LIB
        • net40
    • Microsoft.AspNet.Razor.2.0.30506.0
      • LIB
        • 個 net40
    • Microsoft.AspNet.WebPages.2.0.30506.0
      • LIB
        • net40
  • 頁數
    • 章節
      • Read.cshtml
    • 編輯
      • 移動
        • Chapter.cshtml
      • Entry.cshtml
      • EnterEntry.cshtml
      • EnterNote.cshtml
    • 登錄
      • 登錄。CSHTML
    • 搜索
      • Result.cshtml
  • 腳本
    • 擴展中心
      • TinyMCE的
  • 樣式
    • CSS
  • 查看
    • _Layout.cshtml
  • Default.cshtml

我的web.config文件看起來是這樣的:

<?xml version="1.0"?> 
    <configuration> 
     <system.web> 
      <compilation debug="true" targetFramework="4.0"> 
       <buildProviders> 
       <add extension=".cshtml" type="System.Web.WebPages.Razor.RazorBuildProvider, System.Web.WebPages.Razor"/> 
       </buildProviders> 
       <assemblies> 
       <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> 
       </assemblies> 
      </compilation> 
      </system.web> 
      <connectionStrings> 
      <add connectionString="database connection" providerName="System.Data.SqlClient"/> 
      </connectionStrings> 
     </configuration> 

編輯: 這是個問題我的所有文件都是.cshtml?並且它們被添加爲MIME Typehtml/text

更多編輯: 這是我的Default.cshtml代碼:

@{ 
    Layout = "~/Views/_Layout.cshtml"; 
} 

<table> 
    <tr> 
     <td> 
      <table> 
       <tr> 
        <td> 
         <h1 class="header"> 
          Welcome to the library 
         </h1> 
        </td> 
       </tr> 
       <tr> 
        <td> 
         <p> 
          Do look around, to find information about almost anything there is to know about Mythodea, or maybe you are here to make a chapter or note of your own. 
         </p> 
        </td> 
       </tr> 
      </table> 
     </td> 
    </tr> 
</table> 

而且我_Layout.cshtml代碼: @ {// 一堆的C#代碼 }

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8" /> 

    <link href="~/Styles/CSS/Layout.css" rel="stylesheet" /> 

    <script src="~/Scripts/Addons/TinyMCE/tinymce.min.js"></script> 
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script> 

    @RenderSection("head",false) 

    <title>The Kettle Library of Mythodea</title> 
</head> 
<body> 
    <div id="container"> 
     <div id="header"> 
      <h1> 
       The Library 
      </h1> 
     </div> 

     <div id="left_column"> 
      <div class="innerPadding"> 
       <div id="Menu_Overview"> 
        @Html.Raw(menu) 
       </div> 
      </div> 
     </div> 

     <div id="right_column"> 
      <div class="innerPadding"> 
       @{ 
        if(!SessionHandler.UserIsLoggedIn) 
        { 
         <div class="Login_Wrapper"> 
          <form action="" method="post"> 
           <table> 
            <tr> 
             <td> 
              <p> 
               Username/Email: 
              </p> 
             </td> 
             <td> 
              <input class="form_input" type="text" placeholder="Username/Email" tabindex="1" name="username" value="@username" /> 
             </td> 
            </tr> 
            <tr> 
             <td> 
              <p> 
               Password: 
              </p> 
             </td> 
             <td> 
              <input class="form_input" type="password" placeholder="Password" tabindex="2" name="password" /> 
              <a href="#">forgot?</a> 
             </td> 
            </tr> 
            <tr> 
             <td> 
              <input type="submit" value="Login" name="btn" /> 
             </td> 
             <td> 
              <input type="submit" value="Register" name="btn" /> 
             </td> 
            </tr> 
           </table> 
          </form> 
          <p class="Error_Message">@message_error</p> 
         </div> 
        } 
        else 
        { 
         <div class="Login_Wrapper"> 
          <form action="" method="post"> 
           <p> 
            @name 
           </p> 
           <input type="submit" value="Logout" name="btn" /> 
          </form> 
         </div> 
        } 
       } 

       <div class="SideMenu_Right"> 
        <div id="search_wrapper"> 
         <form action="" method="post"> 
          <input type="text" name="searchField" placeholder="Search" value="@searchValue" required="required" /> 
          <input type="submit" name="btn" value="Search" /> 
         </form> 
        </div> 

        @{ 
         if(SessionHandler.UserIsLoggedIn) 
         { 
          <a href="~/Pages/Entries/EnterEntry.cshtml">Create new Chapter</a> 
          <br /> 
          <br /> 
         } 
        } 

        @RenderSection("menu_right", false) 
       </div> 
      </div> 
     </div> 
     <div id="middle_column"> 
      <div class="innerPadding"> 
       @RenderBody() 
      </div> 
     </div> 
    </div> 
    <div id="madeBy"> 
     <p> 
      Created by <a href="https://www.facebook.com/michaeltot.korsgaard" target="_blank">Michael Tot Korsgaard</a> 
     </p> 
    </div> 
</body> 
</html> 
+1

您需要將錯誤/問題放在問題中,而不是外部鏈接。如果你的頁面正在工作/不再存在,下一個人將如何解決他的問題? – asawyer

+0

將鏈接更改爲圖像。感謝提高^^ –

+1

太棒了。我的第一個猜測是你的IIS配置不正確。它是否設置爲正確的Asp.net版本?編輯 - 確定我在屏幕截圖中看到它,確實看起來不錯.... – asawyer

回答

4

看來你並沒有使用MVC架構。爲什麼你使用Pages而不是Views 我已經看到你所有的錯誤和每件事情都正常工作。以這種方式解決部署問題太難了。所以我把基本說明部署真正的服務器上的MVC應用程序也許有用:

  1. 確保您的應用程序將在本地主機上正常運行,你 沒有改變正常的應用程序或沒有在默認的應用程序配置任何不需要 錯誤。
  2. 然後在需要裝配引用到您的項目按照此添加由於 編譯/運行其他MVC擴展像剃刀: 右鍵點擊你的項目 - >添加可部署的依賴關係 - >標記 都MVC &剃鬚刀 - >確定
  3. 然後再次右鍵單擊您的項目 - >構建部署包| 那麼它將準備發佈。
  4. 然後通常會嘗試發佈過程

到目前爲止你已經配置應用在Windows Server工作,雖然它不支持MVC技術,你的應用有相關的程序集的引用運行/編譯服務器上。現在所有的東西都與服務器和IIS配置有關。遵循以下說明:

  1. 配置IIS通過THIS(如果您的主機支持這種類型的 連接)
  2. 如果服務器是你的,請確保您有 應用配置中沒有異常和根服務器配置。與 .net Framework相關。

編輯:

關於在MVC默認頁面渲染認爲,在的Global.asax文件我們設置默認路由像波紋管(由caling RouteConfig類的RegisterRoutes功能):

public static void RegisterRoutes(RouteCollection routes) 
{ 
    routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 

    routes.MapRoute(
     name: "Default", 
     url: "{controller}/{action}/{id}", 
     defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
    ); 
} 

在MVC體系結構中,我們不使用傳統的ASP頁面路由,例如使用Default.cshtml。 每個控制器在視圖文件夾中調用他的同名文件夾,並根據其操作方法控制.cshtml子頁面。無法選擇重命名應用程序上放置的默認視圖文件夾。 關於掌握頁面認爲,默認情況下,每個MVC應用程序決定渲染視圖時,首先調用_ViewStart.cshtml文件放置在根文件夾瞭解什麼是根據_ViewStart內容的母版頁的名稱。在接下來的這一步,我們有主視圖和局部視圖概念。

例如,如果你試圖改變_ViewStart.cshtml文件(例如_Start.cshtml)的名字,你會看到如下頁面瀏覽最新:

Error When changing _ViewStart.cshtml file name

所以在與MVC架構工作,您必須遵循一些規則/合同來構建成功的應用程序。

+0

我明白,它應該更有意義,而不是'頁面''視圖',但我不明白的是爲什麼會在Default.cshtml(這是在網站的根,而不是在'Views'中)調用放置在'Views'中的視圖'_Layout.cshtml'? PS:正在嘗試檢查我的服務器主機是否支持IIS連接 –

+0

我的服務器正在使用IIS 7 –

+1

IIS 7沒有問題。您需要.net 4支持。我在我的回答中放置視圖調用層次結構也許會成爲您的評論答案。 –

2

你從Views/Pages文件夾中缺少web.config

它應該是這樣的:

<?xml version="1.0"?> 

<configuration> 
    <configSections> 
    <sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
     <section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" /> 
    </sectionGroup> 
    </configSections> 

    <system.web.webPages.razor> 
    <host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> 
    <pages pageBaseType="System.Web.Mvc.WebViewPage"> 
     <namespaces> 
     <add namespace="System.Web.Mvc" /> 
     <add namespace="System.Web.Mvc.Ajax" /> 
     <add namespace="System.Web.Mvc.Html" /> 
     <add namespace="System.Web.Optimization"/> 
     <add namespace="System.Web.Routing" /> 
     </namespaces> 
    </pages> 
    </system.web.webPages.razor> 

    <appSettings> 
    <add key="webpages:Enabled" value="false" /> 
    </appSettings> 

    <system.web> 
    <httpHandlers> 
     <add path="*" verb="*" type="System.Web.HttpNotFoundHandler"/> 
    </httpHandlers> 

    <!-- 
     Enabling request validation in view pages would cause validation to occur 
     after the input has already been processed by the controller. By default 
     MVC performs request validation before a controller processes the input. 
     To change this behavior apply the ValidateInputAttribute to a 
     controller or action. 
    --> 
    <pages 
     validateRequest="false" 
     pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" 
     userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"> 
     <controls> 
     <add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" /> 
     </controls> 
    </pages> 
    </system.web> 

    <system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 

    <handlers> 
     <remove name="BlockViewHandler"/> 
     <add name="BlockViewHandler" path="*" verb="*" preCondition="integratedMode" type="System.Web.HttpNotFoundHandler" /> 
    </handlers> 
    </system.webServer> 
</configuration> 
+0

我已將您的代碼添加到我的'web.config'中,現在每加載一頁,我都會遇到404錯誤。我錯過了什麼? –

+1

這可能是爲什麼: '也許嘗試創建新的MVC項目並複製生成的web.config –