私はC#でMVCアプリケーションを開発しました。私は今、他の内部システムおよび後で他の外部システムがAPIを呼び出すためのWebサービス(API)を公開する必要があります。MVCコントローラを使用してWindows Communication Foundation(WCF)からデータを保存
私は、MVCアプリケーションと同じソリューションで新しいWCFプロジェクトを実装しました。 WCF Webサービスからのサンプルリクエストと応答の取得に問題はありません。
私が従いたいソリューションは、すべてのソースに対して同じビジネスロジックレイヤーを使用することです。 Business Logic Layerは現在MVCアプリケーション内にあり、Entity Frameworkを使用して新しい/変更されたレコードを検証し、最終的に保存するためにModelStateに優位性があります。
このようにModelStateに依存しているため、ModelStateがMVCに属していない場合でも、単にサービスレイヤーを呼び出すことはできません。
ビジネスレイヤとWCFレイヤの間のゲートウェイとして機能するMVCコントローラを作成しました。私が何をしていても、コントローラでアクションを直接呼び出すことはできません。コントローラは、WCFレイヤーからオブジェクトとしてインスタンス化できないように、コントローラを保護しているように見えるControllerクラスから継承します。
私が試してみた:また試してみました
Error CS0122 'APITransactionController.APITransactionController()' is inaccessible due to its protection level
:
APITransactionController controller = new APITransactionController();
私は周りに取得することはできませんエラー、取得
var controller = DependencyResolver.Current.GetService<APITransactionController>();
をしかし、変数コントローラはnullを返します。
どのようにすればいいですか? 他の提案はありますか?たぶん私はこのことについて間違った道を行くよ....
PUBLICクラスAPITransactionControllerとして定義されていますか?公共のコンストラクタと? – Mate
コンストラクタはプライベートでした。それを公開して、もう一度試してみましょう... –
それが問題でした。ありがとよ。 –