問題タブ [hyprlinkr]
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.
dependency-injection - Ninject DI をセットアップして Hyprlinkr RouteLinker インスタンスを作成する方法
私は MVC4 Web API プロジェクトを持っており、Mark Seemann のHyprlinkrコンポーネントを利用して、リンクされたリソースへの Uris を生成しています。(顧客 -> 住所など)。
Web API を使用した依存性注入に関する Mark のガイド (Ninject に合わせて適切に変更) には既に従いましたが、コントローラーにIResourceLinkerを注入するために何をすべきかがよくわかりません。
マークのガイドに従って、私のIHttpControllerActivator.Create作成メソッドは次のようになります。
Hyperlinkr のreadme で RouteLinkerの作成が提案されているのは、このメソッドです。残念ながら、これを Ninject に登録する方法がわかりません。
複数のバインディングが発生するため、以下のようにバインドすることはできません。
私は次のように再バインドを行いました:
しかし、ninject バインディング グラフを変更することは、すべてのリクエストで実行するのが悪いことである可能性があることを懸念しています。
これを達成するための最良の方法は何ですか?
Paige Cookからのリクエストに応じて更新
ここで再バインドを使用しています:
IHttpControllerActivator.Createは、すべての要求で呼び出されます。残りのバインディングは標準的な方法で作成されます。つまり、標準とは、Ninject.MVC3 nuget パッケージを使用して生成されたクラスを意味します。
私のコントローラーは次のようになります。
c# - ASPWebApi-IoC-HttpRequestMessageを解決します
ASP.NETWebAPIを使用してCastleWindsorをセットアップしようとしています。
Hyprlinkrパッケージ(https://github.com/ploeh/Hyprlinkr)も使用しているため、コントローラーの依存関係の1つにHttpRequestMessageのインスタンスを挿入する必要があります。
Mark Seemannによるこの記事をフォローしています-http ://blog.ploeh.dk/2012/04/19/WiringHttpControllerContextWithCastleWindsor.aspxですが、APIは実行されていますが、APIを呼び出すと、リクエストはハングします。エラーメッセージはありません。まるで無限ループに入っているかのようです。カスタムControllerActivatorでResolveの呼び出しがハングしています
Castleの登録の一部が間違っていると思います。上記の記事に記載されているものを削除すると、APIを正常に呼び出すことができます(解決する必要のある依存関係はありませんが)
何か案は?
コードは以下です
編集***********追加情報****************
そこで、コントローラーがHttpRequestMessageをctor引数として受け取るシナリオを設定し、次のことを見つけました。
これは機能します:
ただし、これはそうではありません。
つまり、anonオブジェクトに「request」というプロパティがあり、コントローラーのctorargが「request」と呼ばれる場合です。どういうわけか、コントローラーに要求プロパティがnullであると思わせています。これが私が見るエラーの原因です:
'ApiController'インスタンスを再利用できません。「ApiController」は、着信メッセージごとに作成する必要があります。カスタムの「IHttpControllerActivator」をチェックして、同じインスタンスを作成しないことを確認してください。
System.Web.Http.ApiController.ExecuteAsync(HttpControllerContext controllerContext、CancellationToken cancelToken)at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsyncInternal(HttpRequestMessage request、CancellationToken cancelToken)at System.Web.Http.Dispatcher.HttpControllerDispatcher.SendAsync(HttpRequestMessageリクエスト、CancellationToken cancelToken)
これを読んでください セッターインジェクションを呼び出さずにStructureMapでオブジェクトコンポジションを強化するにはどうすればよいですか?
同様のシナリオを説明しています。
もちろん、hyprlinkrには「request」と呼ばれるHttpRequestMessageのctor argがあるので、そのプロパティ名でanonオブジェクトを指定する必要があります。
何か案は?
asp.net-web-api - Hyprlinkrを使用してHTTPPOSTアクションへのリンクを生成するにはどうすればよいですか?
Hyprlinkrを使用してHTTPPostアクションへのURLを生成しようとしています。私のコントローラーは次のようになります。
このルートで:
http://example.com/dosomethingという単純なURLを取得することを期待していますが、機能しません。私は2つの方法を試しました:
1)routeLinker.GetUri(c => c.DoSomething(null))
-スローNullReferenceException
2)routeLinker.GetUri(c => c.DoSomething(new SomeDto()))
-無効なURLを生成します:
http ://example.com/dosomething?someDto = Namespace.SomeDto
更新: githubで開かれた問題: https ://github.com/ploeh/Hyprlinkr/issues/17
f# - 式を提供する方法> メソッドに戻り値がある場合、F# では?
一部の C# コードを F# に変換しようとしています。具体的には、Hyprlinkrを使用して一部のコードを F# に変換しようとしています。
C# コードは次のようになります。
メソッドは次のようにGetUri
定義されます
としてImagesController.Get
定義されます。
F# では、私はこれをやろうとしています:
これはコンパイルされますが、実行時に次の例外がスローされます。
System.ArgumentException はユーザー コードによって処理され
ませ
んでした
。
私がこれを理解する限り、F# 式は return を返す式ですがunit
、実際にはExpression<Action<T>>
'returning'である必要がありますvoid
。
私は F# 3.0 を使用しています (Visual Studio 2012 を使用していると思います)。
どうすればこの問題に対処できますか?
asp.net-web-api - HyprLinkr で null 許容パラメーターを処理する方法は?
ASP.NET Web API には、次のようなアクション メソッドがあります。
hyprlinkr を使用して、optionalValue パラメーターを使用せずにリンクを作成するにはどうすればよいですか?
試した:
これはNullReferenceExceptionをスローしますが、同じです
ティア