2016-04-10 5 views
0

私は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を返します。

どのようにすればいいですか? 他の提案はありますか?たぶん私はこのことについて間違った道を行くよ....

+0

PUBLICクラスAPITransactionControllerとして定義されていますか?公共のコンストラクタと? – Mate

+0

コンストラクタはプライベートでした。それを公開して、もう一度試してみましょう... –

+0

それが問題でした。ありがとよ。 –

答えて

0

チェック:

  • は、PUBLICクラスAPITransactionControllerとして定義しますか?
  • パブリックコンストラクタはありますか?
関連する問題