問題タブ [nancy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
30763 参照

asp.net - HttpHandler を「path/*」ワイルドカード マッピングにマップできない

そのため、http モジュールを MVC3 サイトのサブパスにマップしようとしています。私が理解しているように、それはかなり単純なはずですが、機能していません。モジュールは次のようにセットアップされます。

iis6 にも対応するセクションがあるので、webdev.webserver の下で実行できます。ただし、ローカルの iis7 (Win7 の下) への展開と webdev.webserver の両方をテストすると、実際にハンドラーを呼び出すのは /api のみです。/api/{anything} を呼び出すと、404 が返されます。

私は「間違ったことをしている(tm)」だけだと確信していますが、助けていただければ幸いです。

注: タグを使用して /api フォルダーを作成し、完全なワイルドカードを使用してそのフォルダーに web.config を追加するなど、他のいくつかの構成も試しました。

0 投票する
1 に答える
1945 参照

c# - Nancy セルフ ホスト + TopShelf を使用した空白の応答

Topshelf サービス内で (Razor ビューの nuget パッケージを使用したセルフ ホスティングを使用して) Nancy を使用しようとしています。私はそれをhttp://localhost:8585/でホストしていますが、デバッグモードにいる間、または実行可能ファイルを直接呼び出している間は問題なく動作します。Nancy モジュールは、カミソリ ビューを完全に提供します。

次に、アプリケーションをインストールします。

サービスを開始すると、問題なく動作しているようで、エラーはありません。次に、ブラウザでhttp://localhost:8585/にアクセスすると、空の応答が返されます。理由についてのアイデアはありますか?

Topshelf でサービスのホスティングを開始する前に、Nancy を起動します。

その後、topshelf サービスを次のように構成して開始します。

ninject を使用しています。StartService メソッドと StopService メソッドは、stopwatch.ElapsedMilliseconds の現在の値を出力する単なる関数です。

Nancy モジュールの構成は次のとおりです。

Self Hosting と Razor の部分を除いて、Nancy のすべてのデフォルトを使用しています。何が起こっているのでしょうか?

私も試しnetsh http add urlacl url=http://+:8585/ user=\Everyoneてみましたが、動作に影響はないようです。

0 投票する
3 に答える
4244 参照

c# - Razor ビューを使用した Nancy Self Host の空白の応答

Nancy 0.6 で解決済み


自己ホスト型のナンシーにカミソリ ビューを返させようとしていますが、うまく動作しません。Nancy ソース コードのサンプルでは Web プロジェクトを使用していますが、ページにはこれが必要であるとは記載されていません。構成セクションを指定しようとしましたが、再び「このステップは完全にオプションです」と表示されます (イタリック体は彼らのものです)。ソースをたどると、かみそりが有効なビューエンジンのようには見えませんが、構成または自分のNancyModuleのどこに追加できるかわかりません...助けていただければ幸いです。

エンジンを見る

彼らがviewsフォルダーを見ていることが最終的にわかったとき、cshtmlはサポートされている拡張機能のようですが、DefaultViewFactoryにはビューエンジンに関連付けられていないため、nullになります:

ここに画像の説明を入力

私のコード:

Static.cshtml は、"Hello, world!" という単なる html ページです。

0 投票する
3 に答える
4453 参照

asp.net - ASP.NET HttpHandler 応答キャッシュの無効化

バックグラウンド

IIS 7 で実行されている NancyFx と ServiceStack.NET のパフォーマンスを比較している最中です (Windows 7 ホストでのテスト)。どちらも非常に高速です。各フレームワークをローカルでテストすると、毎秒 10,000 以上のリクエストが処理され、ServiceStack は約 20% 高速です。

私が直面している問題は、ASP.NET が HttpHandler からの一意の URI 要求ごとの応答をキャッシュしているように見え、すぐに大量のメモリ負荷 (3 GB 以上) が発生し、ガベージ コレクターが過負荷になることです (約 25% の時間が消費されます)。 GC)。これまでのところ、オブジェクトのキャッシングとビルドアップを無効にすることができませんでした。この動作を無効にする方法についての提案を探しています。

詳細

リクエストループは基本的に次のとおりです。

応答は、{ UserID: n } の形式の単純な JSON オブジェクトです。

私はWinDBGを開いてクラックしました。リクエストごとに次のものがあります。

  • 1System.Web.FileChangeEventHandler
  • System.Web.Configuration.MapPathCacheInfos
  • System.Web.CachedPathDatas
  • System.Web.Caching.CacheDependencys
  • System.Web.Caching.CacheEntrys

明らかに、これらのキャッシュ アイテムが原因で、キャッシュの肥大化の問題であると思われます (150,000 個の使用できないオブジェクトを取り除きたいです!)。

これまでに試したこと

  • IIS の「HTTP 応答ヘッダー」で、「Web コンテンツの期限切れ」を「即時」に設定します。
  • web.config で

    /li>
  • また、web.config (およびポリシーのさまざまなバリエーション (なしを含む)) にも含まれます。

    /li>
  • フレームワークのソース コードを調べて、ASP.NET キャッシュを使用する "機能" が組み込まれているかどうかを確認しました。キャッシュ ヘルパーはありますが、フレームワーク自体に限定されており、ASP.NET キャッシュを利用していないようです。

更新 #1

リフレクターを調べてみると、 の値UrlMetadataSlidingExpirationをゼロに設定すると、スループットが 50% 低下する代わりに、過剰なメモリ使用量の大部分が解消されることがわかりました (FileAuthorizationModule クラスは FileSecurityDescriptors をキャッシュします。UrlMetadataSlidingExpirationは非ゼロです)。

これを行うには、web.config を更新し、以下を に配置します。

可能であれば、FileAuthorizationModule の実行を完全に無効にして、それが役立つかどうかを確認します。ただし、ASP.NET は依然として 2*NMapPathCacheInfoおよびCacheEntryオブジェクトを生成しているため、メモリは依然として消費されていますが、その速度ははるかに遅くなります。

アップデート #2

問題の残りの半分は、ここで説明されているのと同じ問題です: Prevent many different MVC URLs from fill ASP.NET Cache . 設定

<cache percentagePhysicalMemoryUsedLimit="1" privateBytesPollTime="00:00:01"/> 役に立ちますが、これらの非常に積極的な設定でも、メモリ使用量はすぐに 2.5GB に上昇します (4GB と比較して)。これらのオブジェクトが最初から作成されないことが理想的です。それができない場合は、リフレクションを使用してキャッシュをクリアするというハックな解決策に頼るかもしれません (これらのエントリはすべて「プライベート」であり、パブリック キャッシュを反復処理するときに列挙されません)。

0 投票する
1 に答える
3726 参照

c# - ナンシーセルフホストはモジュールを呼び出さないのですか?

Nancy FrameworkをC#コンソールアプリケーションに追加する作業を行っています(ここで非常に短いチュートリアルを実行すると、 http:// localhost:1234にアクセスすると空白のページが読み込まれるため、起動していることがわかりますが、正しくテキストを入力します。コードを何度も調べましたが、問題はありません。

NancyとNancy.Hosting.Selfの両方をプロジェクトに追加しました。

印刷行をいくつか追加しましたが、ページにアクセスしたときにモジュールが呼び出されることはありません。誰かが問題が何であるかについて何か手がかりを持っていますか?

0 投票する
1 に答える
344 参照

c#-4.0 - SparkモデルメソッドがIFステートメントでクラッシュする

Sparkのviewdataモデルのいくつかのメソッドを使用していますが、正しく機能しません。以前は動作していたと思いましたが、クラッシュしているようです。私は気づいていない何か間違ったことをしていますか?

また、Sparkファイルのコードから複数のクラスを使用できますか、それとも1つだけを渡すことができます<viewdata model="namespace.class">か?Sparkのドキュメントには次のようなもの<viewdata currentProduct="Product"/>がありますが、それが何から引き出されているのかわかりません。

0 投票する
2 に答える
1330 参照

c# - JSONデータソースとは何ですか?

Nancy FrameworkとSparkビューエンジンを使用してC#コンソールアプリケーションに取り組んでおり、別のプロジェクトから何かを複製しようとしています。ただし、私はJavascriptとJSONの両方に非常に不慣れです。HTMLからC#コードでチャット関数を呼び出すには、今は次のようなものを使用します...

HTML:

C#コード:

問題は、これによりページがリロードされることです。私が参照しているプロジェクトでは、Javascript / JSONを使用して、ページのリロードを行わずに同じタイプの関数を呼び出しています。データソースが何であるかわからないので、JSON行を除いてすべてを理解しています...

0 投票する
2 に答える
2767 参照

unit-testing - ナンシーモジュールの試乗

わかりました - NancyFx が大好きです。この数行で Web アプリケーションを作成するのは驚くべきことです。

しかし、ユニット レベルで NancyModules をテストするにはどうすればよいでしょうか?

Nancy に付属している優れたテスト フレームワーク(Nancy.Testing on NuGet) を認識していることに注意してください。これは、(ほぼ) アプリケーション スタック全体をテストするための優れた方法を提供します。しかし今、私が NancyModule のコンテンツを TDD 方式で具体化するために使用するユニットレベルのテストを意味します。

ルートはコンストラクターで定義されるため、多くの場合、アクション全体を構成するラムダ式とともに、単体テストからは少し「到達できない」ように感じます。しかし、ルートのアクションをテストする方法について明らかなことを見逃していませんか?

たとえば、この単純なアプリケーションの単体テストはどのようになるでしょうか?

そこを参照してください-今、テストの前に製品コードを書きました... :) テストを開始する方法について何か提案はありますか?

0 投票する
1 に答える
1233 参照

.net - Nancy with Razor: ビューがキャッシュされ、開発が非常に困難になる

Nancy と Razor (および MVC) は初めてです。ビューに変更を加えた場合、変更を有効にするには、何らかの方法でアプリケーションを再起動する必要があります (web.config の変更、開発サーバーの再起動など)。

キャッシュは Razor の静的辞書であると思いますか? コンパイルされた各ビューを保存しますか? これは間違いなく本番環境には最適ですが、開発環境でオフにするにはどうすればよいですか? ビューを変更し、保存し、ビルドし、変更を確認できるようにしたいと考えています。

どんなアドバイスでも大歓迎です。ありがとう。

0 投票する
2 に答える
3403 参照

javascript - Jquery で使用する Nancy を含む Json ファイルを返す

拡張子が .json の JSON を含むファイルがあります。次のようにナンシーを使用してファイルを提供しています。

次のようなファイルに対してjQuery ajaxリクエストを行うと:

ファイルを取得しましたが、JSON として認識されません。これは、返される Content-Type が application/octet-stream であるためだと確信しています。

Content-Type を application/json に変更するにはどうすればよいですか?

私はもう試した:

ファイルの内容を文字列に読み取ってから Response.AsJson を使用する必要がありますか、または Response.AsFile が返すヘッダーを変更する方法はありますか?