2

我已經用Bootstrap設置了一個非常基本的ServiceStack項目,我試圖讓它看到我的主頁(Razor View),它沒有,所以我得到我的主頁的快照。下面是我用來創建項目的步驟:ServiceStack不渲染剃刀視圖,只看到快照

  1. 新建項目「ServiceStack ASP.Net與引導」
  2. 開放的NuGet服務器控制檯下載misssing Servicestack包。
  3. 構建。
  4. 更名Services.cs到MyStuffServices.cs和Model.cs到MyStuffModel.cs
  5. 加進 'AppHost.cs':

    SetConfig(new HostConfig 
         { 
          DefaultRedirectPath = "/Home" 
         }); 
    
  6. 移動 「_layout.cshtml」 從/ veiws /共享到/ views文件夾

  7. 增加了 「Home.cshtml」 到/視圖
  8. 添加次要文字Home.cshtml
  9. 添加到MyStuffService.cs

    public class HomeService : Service 
    { 
        [DefaultView("Home")] 
        public int Get(Home request) 
        { 
         return 0; 
        } 
    } 
    
  10. 加入MyStuffModel.cs:

    [Route("/home", "GET")]  
    public class Home : IReturn<int> 
    { 
    
    } 
    
  11. 生成。
  12. 運行到Internet Explorer - 獲取快照頁面。

這裏是我的AppHost.cs

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    using Funq; 
    using ServiceStack; 
    using ServiceStack.Razor; 
    using MyStuff.ServiceInterface; 

    namespace MyStuff 
    { 
    public class AppHost : AppHostBase 
    { 
    /// <summary> 
    /// Default constructor. 
    /// Base constructor requires a name and assembly to locate web service classes. 
    /// </summary> 
    public AppHost() 
     : base("MyStuff", typeof(MyStuffServices).Assembly) 
    { 

    } 

    /// <summary> 
    /// Application specific configuration 
    /// This method should initialize any IoC resources utilized by your web service classes. 
    /// </summary> 
    /// <param name="container"></param> 
    public override void Configure(Container container) 
    { 
     //Config examples 
     //this.Plugins.Add(new PostmanFeature()); 
     //this.Plugins.Add(new CorsFeature()); 

     this.Plugins.Add(new RazorFormat()); 

     SetConfig(new HostConfig 
     { 
      DefaultRedirectPath = "/Home" 
     }); 
    } 
} 
} 

這裏是我的Global.asax

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using System.Web; 
    using System.Web.Security; 
    using System.Web.SessionState; 

    namespace MyStuff 
    { 
     public class Global : System.Web.HttpApplication 
    { 
     protected void Application_Start(object sender, EventArgs e) 
    { 
     new AppHost().Init(); 
    } 
} 
} 

我沒有錯誤,程序包管理器說,我絕不錯過任何軟件包。我覺得有一個我想念的一步,任何幫助,非常感謝。

更新:當與調試執行,這是我所得到的,當我打開Internet Explorer

@inherits ViewPage 
@{ 
    ViewBag.Title = "Hello World Service"; 
} 
<div> 
    <div> 
     <input class="form-control input-lg" id="Name" type="text"  placeholder="Type your name"> 
     <p id="helloResult" style="margin-top: 15px;font-size: large"></p> 
    </div> 
</div> 
<script> 
    $('#Name').keyup(function() { 
     var name = $('#Name').val(); 
     if (name) { 
      $.getJSON('/hello/' + name) 
       .success(function (response) { 
        $('#helloResult').html(response.Result); 
       }); 
     } else { 
      $('#helloResult').html(''); 
     } 
    }); 
</script> 
+0

這對我有用,你可以試着查看你的[?debug = requestinfo](https://github.com/ServiceStack/ServiceStack/wiki/Debugging#request-info)來查看是否有任何啓動錯誤。否則,您可以將您的解決方案添加到GitHub倉庫,以便我們調試問題所在? – mythz

+0

使用Fiddler,我可以告訴我的請求沒有任何錯誤,並且我得到了一個響應(藍色文本,因爲我的視圖中只有HTML) –

+0

請參閱原始問題以更新 –

回答

2

貌似這個問題可能不同於添加NuGet包Microsoft.AspNet.Razor.3.2.2現有的MVC剃刀項模板現身這是重寫ServiceStack.Razor參考。

避免這種情況的一種方法是在添加新視圖時使用基本HTML項目模板並將其命名爲cshtml擴展名。

HTML file work around

這將避免不必要的NuGet引用從MVC項目模板來。

爲了使這個更直接明瞭,ServiceStackVS extension has been updated包括一個簡單的Razor項目模板,不添加有問題的Microsoft.AspNet.Razor.3.2.2 NuGet包,並簡單地添加一個空白的HTML頁面。

ServiceStackVS Razor item template

如果你不小心使用的MVC項目模板之一,要解決你的項目,你會想要做以下步驟。

  1. 右鍵單擊項目 - >管理的NuGet軟件包
  2. 選擇Installed packages在左上角的選項卡(VS 2013年)
  3. 卸載Microsoft ASP.NET剃刀相關的軟件包
  4. 卸載ServiceStack.Razor
  5. 重新安裝ServiceStack.Razor
  6. 刪除<runtime> System.Web的條目在添加Razor項目之前並不存在。

希望有所幫助。