2014-01-19 72 views
4

我想用F#的Servicestack。所以,我很成功。但同時試圖拉動與使用剃鬚刀引擎的asp.net託管的東西。我遇到了一個奇怪的問題。Servicestack剃鬚刀頁正在增加到內容

如果對於default.cshtml,我選擇不與具有內容的編譯一起復制的屬性,而不是頁面沒有被填充並且它將進入元數據頁面。但如果我設定複製,如果更新,它會起作用。

但據我所知,這應該是不要複製,因爲編譯是內容。如果我們沒有這樣做,那麼對於cshtml頁面中的每個更改都需要重新運行該項目。

現在,這也是F#項目所獨有的,它在C#中工作。所以,我完全不知道在哪裏看。順便說一句我正在使用3.9.71版本的servciestack。

請讓我知道是否需要任何進一步的細節。我的項目repo

回答

4

更新:

您的應用程序設置錯誤

您的F#MVC應用程序安裝不正確。您正在使用應使用IIS作爲主機的ASP.NET。這意味着來自IIS的請求會傳遞到AppHost。但是,在您的設置中,您使用的是AppHostHttpListenerBase這實際上是創建它自己的HTTP偵聽器,本質上,您將獨立自我託管與ASP.NET託管的設置混合在一起。

因此,您會遇到必須將內容複製到輸出目錄的奇怪情況。這是因爲在獨立的ServiceStack應用程序中,這是要求,它正在尋找錯誤位置的內容。

嘗試使用這樣的:

type AppHost = 
    inherit AppHostBase 
    new() = { inherit AppHostBase("Hello F# Services", typeof<HelloService>.Assembly) } 
    override this.Configure container = 
    ... 

你應該閱讀this article,以確保您已經設置了ASP.NET MVC應用程序正確。

您仍想使用DebugMode = true,使ServiceStack自動挑上的變化,所以我留在答案的一部分。


這是一個有點難以適從你說的話,但如果我已經正確解釋了它,那麼您就說你有一個F#ASP.NET ServiceStack Razor項目,並且你發現每次更改視圖時都必須重新運行構建過程。

我還沒有使用過F#,所以我將不得不在C#中給出這個例子,但是您需要將您的AppHost配置設置爲DebugMode = true,以使ServiceStack自動獲取更改,因此您不會有每次重新運行構建過程。

SetConfig(new EndpointHostConfig { 
    DebugMode = true, 
}); 

我在你的代碼注意,這是沒有設置:

type AppHost() = 
    inherit AppHostHttpListenerBase("Hello F# Service", typeof<HelloService>.Assembly) 
    override this.Configure container = 
     this.Plugins.Add(new RazorFormat()) 
     ignore() 

    static member start() = 
     let apphost = new AppHost() 
     apphost.Init() 

this documentation節「的修改意見,佈局模板和諧音(在調試模式)自動重載」的詳細信息。

所以在調試模式下我們也將這樣做,其中一個後臺文件系統觀察顯示器的所有頁面,諧音和佈局模板修改和重新編譯和自動重新加載它們在飛行中...

+0

嘿,謝謝你快速回答。我試過但沒有工作。這是事情。在C#項目中,編譯類型是內容並且複製到輸出目錄是沒有任何東西的。但在F#編譯類型是內容,但我仍然必須將副本設置爲輸出目錄以複製,如果更新以使其工作。我想這是問題。如果無論如何,我設法運行與副本輸出目錄無,問題將得到解決。 – kunjee

+0

@kunjee我已經更新了答案。我已經發現了這個問題。你不應該使用'AppHostHttpListenerBase'這隻適用於自我託管的應用程序。 – Scott

+0

我不能感謝你。你救了我......這個問題讓我像任何事一樣困擾着我。我從自己託管的應用程序複製粘貼的代碼,然後我犯了錯誤。謝啦。非常感謝。 – kunjee