4

親ディレクトリから静的ファイルを提供したいので、アプリケーションの実行中に簡単に開発できるように変更できます。私は次のようにBootstrapperに静的コンテンツ規則を追加しようとしました:

this.Conventions.StaticContentsConventions.Add(
  StaticContentConventionBuilder.AddDirectory("content", @"../../content")
);
base.ConfigureConventions(nancyConventions);

しかし、それでもそれらの静的ファイルを見つけることはできません。親フォルダから提供することはできませんか?

4

3 に答える 3

4

StaticContentConventionBuilderではありません。セキュリティ上の理由から、これは明示的に許可していません。ユーザーから要求されたファイルが常にWebルートの範囲内にあることを確認します。そうしないと、ユーザーがパス操作を使用して、望まないファイルを取得する可能性があります。

あなたが本当にこれをしなければならないなら(あなたが他のどこでも同じように簡単にウェブルートのファイルを編集できるときあなたの推論はほとんど意味がありませんが)、あなたは自分で最初から規則を書かなければなりません-それはFuncです。

于 2013-01-21T13:50:26.063 に答える
0

IRootPathProviderデバッグビルドに実装して、必要なパスを返すことができます。

于 2015-06-30T12:15:18.857 に答える
0

これらの2つのファイルをプロジェクトに追加する場合: https ://gist.github.com/elliotwoods/4822f9c512b4f464534d9e01eb6d21b1

次に、次のようなカスタム静的フォルダーを使用できます。

public class CustomBootstrapper : DefaultNancyBootstrapper
{

    protected override void ConfigureConventions(NancyConventions nancyConventions)
    {
        base.ConfigureConventions(nancyConventions);

        nancyConventions.StaticContentsConventions.Add(
#if (DEBUG)
            UnsafeStaticContentConventionBuilder.AddDirectory("/StaticContent", "../../StaticContent")
#else
            StaticContentConventionBuilder.AddDirectory("/StaticContent", "StaticContent")
#endif
            );
    }

}

公開されるものでこれを実行したくない理由は非常にあります。私の立場で:

  1. TargetDirはgitによって追跡されません
  2. デバッグモード中にコンテンツを編集して、アプリの実行中に結果を確認したい
  3. 私のアプリはプライベートネットワークでのみ実行されます

それなら、このルーチンは安全だと思います

于 2018-05-29T11:47:16.717 に答える