2012-07-13 30 views
1

我從Visual Studio 2012創建了一個websharper sitelet項目,我稱之爲SiteletTest。在IIS7.5上部署WebSharper 2.4 Sitelet

我編譯了這個項目。

然後我將SiteletTest/Web複製到inetpub/wwwroot。

然後我去localhost/SiteletTestlocalhost/SiteletTest/Homelocalhost/SiteletTest/home,但在每種情況下,我得到HTTP 404

如果我去localhost/Main.html然後我得到一個頁面,所以要在這個目錄似乎工作,但沒有按websharper」 t似乎在工作。

我的web.config位於下面,我不知道還有什麼辦法。我已經設置應用程序池使用.NET 4:

<configuration> 
<system.web> 
    <compilation debug="true" targetFramework="4.5" /> 
    <authentication mode="Forms" /> 
    <pages> 
    <controls> 
    <add tagPrefix="WebSharper" namespace="IntelliFactory.WebSharper.Web" assembly="IntelliFactory.WebSharper.Web" /> 
    <add tagPrefix="ws" namespace="Website" assembly="Website" /> 
    </controls> 
    </pages> 
    <httpModules> 
    <add name="WebSharper.Remoting" type="IntelliFactory.WebSharper.Web.RpcModule, IntelliFactory.WebSharper.Web" /> 
    <add name="WebSharper.Sitelets" type="IntelliFactory.WebSharper.Sitelets.HttpModule, IntelliFactory.WebSharper.Sitelets" /> 
    </httpModules> 
</system.web> 
<system.webServer> 
    <validation validateIntegratedModeConfiguration="false" /> 
    <modules> 
    <add name="WebSharper.Remoting" type="IntelliFactory.WebSharper.Web.RpcModule, IntelliFactory.WebSharper.Web" /> 
    <add name="WebSharper.Sitelets" type="IntelliFactory.WebSharper.Sitelets.HttpModule, IntelliFactory.WebSharper.Sitelets" /> 
    </modules> 
</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> 
    <assemblyBinding appliesTo="v4.0.30319" xmlns="urn:schemas-microsoft-com:asm.v1"> 
    <dependentAssembly> 
    <assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" /> 
    <bindingRedirect oldVersion="2.0.0.0" newVersion="4.3.0.0" /> 
    </dependentAssembly> 
    </assemblyBinding> 
</runtime> 
</configuration> 

我不會被支付牌照,直到我得到一個想法,如果可能我需要工作,所以,我怎麼得到這個上班

我不想複製的微型網站的代碼,但這裏有一些片段:

type Action = 
     | Home 
     | Contact 
     | Protected 
     | Login of option<Action> 
     | Logout 
     | Echo of string 

和另一個片段:

module Pages = 

    /// The home page. 
    let HomePage : Content<Action> = 
     Skin.WithTemplate "Home" <| fun ctx -> 
      [ 
       H1 [Text "Welcome to our site!"] 
       "Let us know how we can contact you" => ctx.Link Action.Contact 
      ] 
+0

我們不能幫你基於上面的零零碎碎。爲什麼不發送完整的項目? – t0yv0 2012-07-14 13:39:05

+0

此時它可能是(a)WebSharper模塊不會加載到您的IIS中; (b)或您嘗試的URL不是由您的WebSharer路由器對象定義的URL。該項目是否在開發服務器上工作? IIS與開發服務器在同一臺機器上嗎?你的路由器是什麼? IIS配置爲服務該網站?在根目錄還是在虛擬目錄中? – t0yv0 2012-07-14 13:44:12

回答

2

我敢肯定你是三缺1事情:

1-你的微型網站/路由器沒有定義......是這樣的:

type Site() = 
    interface IWebsite<Action> with 
     member x.Sitelet = 
      Sitelet.Infer 
      <| function 
       | Home -> Pages.HomePage 
       ... 
     member x.Actions = [] 

這將每個動作案例映射到正確的頁面。有很多方法可以定義它,但上面的Sitelet.Infer只是按名稱映射路線。

2 - 你沒有指定一個網站集屬性......這樣的事情:

[<assembly : Website(typeof<Site>)>] 
do() 

我認爲這告訴ASP.NET加載上述微型網站爲您的網站。

3-第三個選項是從C#Web項目中的Default.aspx頁面自動加載客戶端JavaScript控件。如果你使用Web應用程序(ASP.NET)模板,你會看到一個例子......但是我認爲你不能以REST完全的方式控制URL路徑。