現在のloggedonuserをサービスレイヤーに挿入するのに問題があります。コードキャンプサーバーに似たものを試していますが、コードが機能しない理由を理解するのに苦労しています...
私のアプリ: UI レイヤー -> ドメイン サービスに接続 -> レポ レイヤーに接続...
レポはUIに接続されていません。すべてがチェックされ、検証され、DomainServiceレイヤーから返されます...
私のコード:
//これは私のドメインサービス内で宣言されています
public interface IUserSession
{
UserDTO GetCurrentUser();
}
私のWebアプリケーション内で、このサービスを実装してからサービスレイヤーに挿入したいので(これが私が立ち往生している場所です):
public class UserSession : IUserSession
{
//private IAuthorizationService _auth;
public UserSession()//IAuthorizationService _auth)
{
//this._auth = _auth;
}
public UserDTO GetCurrentUser()
{
var identity = HttpContext.Current.User.Identity;
if (!identity.IsAuthenticated)
{
return null;
}
return null;
//return _auth.GetLoggedOnUser(identity.Name);
}
}
私がやりたいことは、認証サービスからloggedonuserを取得することですが、うまくいかなかったため、コードをスタブしました...
global.asax 内のすべてを次のようにバインドします。
protected override void OnApplicationStarted()
{
AreaRegistration.RegisterAllAreas();
// hand over control to NInject to register all controllers
RegisterRoutes(RouteTable.Routes);
Container.Get<ILoggingService>().Info("Application started");
//here is the binding...
Container.Bind<IUserSession>().To<UserSession>();
}
まず、IUserSession を使用するサービスを使用しようとすると例外が発生します。コントローラー x にデフォルトのパラメーターなしのコンストラクターを提供してくださいと表示されますが、ドメイン サービスから参照を削除するとすべてが機能します...
サービス部門:
private IReadOnlyRepository _repo;
private IUserSession _session;
public ActivityService(IReadOnlyRepository repo, IUserSession _session)
{
this._repo = repo;
this._session = _session;
}
これを実装するためのより良い方法/より簡単な方法はありますか?
以下の返信の助けを借りてUPATEして、なんとかこれを成し遂げました。