「Nancy/静的コンテンツを扱う」の版間の差分

提供:MonoBook
ページの作成:「Nancyでは初期状態でJavaScriptやCSSなどの静的コンテンツは除外されてしまい問答無用で404 Not Foundを返してくる。 どうしろと。 =...」
 
編集の要約なし
 
(他の1人の利用者による、間の2版が非表示)
1行目: 1行目:
Nancyでは初期状態でJavaScriptやCSSなどの静的コンテンツは除外されてしまい問答無用で404 Not Foundを返してくる。
[[Nancy]]では初期状態で[[JavaScript]]や[[CSS]]などのプロジェクトに含まれる静的コンテンツは除外されてしまい問答無用で404 Not Foundを返してくる。
どうしろと。
どうしろと。


==解決策(仮)==
==解決策(仮)==
DefaultNancyBootstrapperを継承したクラスをプロジェクトの直下においておくと勝手に読み込まれる模様。
DefaultNancyBootstrapperクラスを継承したクラスをプロジェクトの直下においておくと勝手に読み込まれる模様。
 
そしてその中のConfigureConventionsメソッドを上書きして、以下のように静的コンテンツのあるディレクトリを書きまくれば解決した。
そしてその中のConfigureConventionsメソッドを上書きして、以下のように静的コンテンツのあるディレクトリを書きまくれば解決した。
サブディレクトリも対象になるようだ。
サブディレクトリも対象になるようだ。
21行目: 20行目:
             base.ConfigureConventions(conventions);
             base.ConfigureConventions(conventions);


            // ここに追記する
            // サブディレクトリも勝手に追加されている模様
             conventions.StaticContentsConventions.Add(
             conventions.StaticContentsConventions.Add(
                 StaticContentConventionBuilder.AddDirectory("Scripts", @"Scripts")
                 StaticContentConventionBuilder.AddDirectory("Scripts", @"Scripts")
            );           
            conventions.StaticContentsConventions.Add(
                StaticContentConventionBuilder.AddDirectory("Content", @"Content")
             );
             );
         }
         }
30行目: 34行目:


StaticContentConventionBuilder.AddDirectoryの書式は以下のような感じだと思う。
StaticContentConventionBuilder.AddDirectoryの書式は以下のような感じだと思う。
公開名がURLの一部となる部分で、公開ディレクトリがXamarin Studioのプロジェクト上のディレクトリになる。
公開名がURLの一部となる部分で、公開ディレクトリが[[Xamarin Studio]]のプロジェクト上のディレクトリになる。
「公開名」と「公開ディレクトリ」を同一にしておけば扱いやすいと思う。
「公開名」と「公開ディレクトリ」を同一にしておけば扱いやすいと思う。
本当にこれでいいのかは知らん。
本当にこれでいいのかは知らん。
36行目: 40行目:
   StaticContentConventionBuilder.AddDirectory(公開名, 公開ディレクトリ)
   StaticContentConventionBuilder.AddDirectory(公開名, 公開ディレクトリ)
</source>
</source>
== 関連項目 ==
* [[Nancy]]
== 参考文献 ==
{{reflist}}


{{stub}}
{{stub}}
[[category: ASP.NET]]
[[category: Nancy]]

2016年5月30日 (月) 01:10時点における最新版

Nancyでは初期状態でJavaScriptCSSなどのプロジェクトに含まれる静的コンテンツは除外されてしまい問答無用で404 Not Foundを返してくる。 どうしろと。

解決策(仮)[編集 | ソースを編集]

DefaultNancyBootstrapperクラスを継承したクラスをプロジェクトの直下においておくと勝手に読み込まれる模様。 そしてその中のConfigureConventionsメソッドを上書きして、以下のように静的コンテンツのあるディレクトリを書きまくれば解決した。 サブディレクトリも対象になるようだ。 本当にこれでいいのかは知らん。

using System;
using Nancy;
using Nancy.Conventions;

namespace Test
{
    public class AppBootstrapper : DefaultNancyBootstrapper
    {
        protected override void ConfigureConventions(NancyConventions conventions)
        {
            base.ConfigureConventions(conventions);

            // ここに追記する
            // サブディレクトリも勝手に追加されている模様
            conventions.StaticContentsConventions.Add(
                StaticContentConventionBuilder.AddDirectory("Scripts", @"Scripts")
            );            
            conventions.StaticContentsConventions.Add(
                StaticContentConventionBuilder.AddDirectory("Content", @"Content")
            );
        }
    }
}

StaticContentConventionBuilder.AddDirectoryの書式は以下のような感じだと思う。 公開名がURLの一部となる部分で、公開ディレクトリがXamarin Studioのプロジェクト上のディレクトリになる。 「公開名」と「公開ディレクトリ」を同一にしておけば扱いやすいと思う。 本当にこれでいいのかは知らん。

  StaticContentConventionBuilder.AddDirectory(公開名, 公開ディレクトリ)

関連項目[編集 | ソースを編集]

参考文献[編集 | ソースを編集]