我只想放置与WEB API一起使用的条件必需属性
例
public sealed class EmployeeModel
{
[Required]
public int CategoryId{ get; set; }
public string Email{ get; set; } // If CategoryId == 1 then it is required
}
Run Code Online (Sandbox Code Playgroud)
我通过(ActionFilterAttribute)使用模型状态验证
我主要使用Ninject作为手动绑定,如波纹管.哪个工作正常
kernel.Bind<TestContext>().ToSelf().InRequestScope();
kernel.Bind<ITestRepository>().To<TestRepository>();
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用基于约束的绑定绑定时,有点困惑,什么时候使用?
我浏览了这个Ninject文档但是我找不到很多例子.
根据我的所有Repository类实现IRepository < Model >.因此,如果我想以传统方式进行绑定,那么下面的代码可以正常工作.
kernel.Bind(x => x
.FromAssembliesMatching("*")
.SelectAllClasses()
.InheritedFrom(typeof(IRepository<>))
.BindDefaultInterface());
Run Code Online (Sandbox Code Playgroud)
但我有点困惑
1.当我改变.FromAssembliesMatching("*") 要.FromThisAssembly()它不能正常工作,并抛出Error activating ITestRepository为什么呢?
2.当改变.SelectAllClasses()为To .SelectAllIncludingAbstractClasses()时,.FromAssembliesMatching("*")它的组合工作正常,为什么?
让我解释一下我的代码结构.
IRepository(在DLL 1中)
public interface IRepository<E>
{
E Get();
}
Run Code Online (Sandbox Code Playgroud)
RepositoryBase(在DLL 1中)
public abstract class RepositoryBase<E> : IRepository<E>
where E : class
{
public E Get()
{
return System.Activator.CreateInstance<E>(); // this is just for testing
}
}
Run Code Online (Sandbox Code Playgroud)
TestRepository …
c# dependency-injection ninject ninject-extensions ninject.web.mvc
我想调用Api函数(1st).来自使用HttpClient的第二个Api功能.但我总是得到404错误.
第一个Api函数(EndPoint: http:// localhost:xxxxx/api/Test /)
public HttpResponseMessage Put(int id, int accountId, byte[] content)
[...]
Run Code Online (Sandbox Code Playgroud)
第二个Api功能
public HttpResponseMessage Put(int id, int aid, byte[] filecontent)
{
WebRequestHandler handler = new WebRequestHandler()
{
AllowAutoRedirect = false,
UseProxy = false
};
using (HttpClient client = new HttpClient(handler))
{
client.BaseAddress = new Uri("http://localhost:xxxxx/");
// Add an Accept header for JSON format.
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var param = new object[6];
param[0] = id;
param[1] = "/";
param[2] = "?aid=";
param[3] = …Run Code Online (Sandbox Code Playgroud) 有没有办法从部署的Web Api获取详细信息异常和堆栈跟踪?
即使我部署在调试模式下,我是否会获得详细的错误跟踪?
我收到了来自服务器API的消息
"message":"处理HTTP请求导致异常.有关详细信息,请参阅此异常的'Response'属性返回的HTTP响应."
这只发生在服务器上,同样的代码在本地机器上运行完美.
想知道自定义支付网关与NopCommerce集成的过程是什么.如果我的支付网关插件不可用?
如何为另一个支付网关制作NopCommerce插件?我需要与我的商店整合.
我需要做出哪些改变,整合新的支付网关?进入NopCommerce?
payment-gateway e-commerce nopcommerce payment-processing asp.net-mvc-4
根据这篇文章描述custom-membership-provider-with-repository-injection
我实现自定义成员资格提供注入.
定制会员提供商
using Ninject;
public class CustomMembershipProvider : MembershipProvider
{
[Inject]
public IUserRepository UserRepository { get; set; }
[...]
Run Code Online (Sandbox Code Playgroud)
自定义角色提供者
using Ninject;
public class CustomRoleProvider : RoleProvider
{
[Inject]
public IUserRoleRepository UserRoleRepository { get; set; }
[...]
Run Code Online (Sandbox Code Playgroud)
在Web.Config中
<membership defaultProvider="CustomsMembershipProvider">
<providers>
<clear/>
<add name="CustomsMembershipProvider" type="namespace.CustomsMembershipProvider"/>
</providers>
</membership>
<roleManager enabled="true" defaultProvider="customRoleProvider">
<providers>
<clear/>
<add name="customRoleProvider" type="namespace.customRoleProvider"/>
</providers>
</roleManager>
Run Code Online (Sandbox Code Playgroud)
现在在NinjectWebCommon中
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
RegisterServices(kernel); …Run Code Online (Sandbox Code Playgroud) asp.net-mvc entity-framework ninject custom-membershipprovider
我喜欢使用Ninject自动绑定绑定波纹管代码.是否可以在单个项目中同时使用手动和自动绑定?让我们采用波纹管手动绑定,我希望通过自动绑定实现.请告诉我如何实现这一目标.
kernel.Bind<TestContext>().ToSelf().InRequestScope();
kernel.Bind<IUnitOfWork<TestContext>>().To<UnitOfWork<TestContext>>();
Bellow所有接口都继承自基础接口:IRepository <Model>
3. kernel.Bind<IUserRepository>().To<UserRepository>();
4. kernel.Bind<IAccountRepository>().To<AccountRepository>();
5. kernel.Bind<IMessageRepository>().To<MessageRepository>().WithConstructorArgument("apikey", AppSettingsManager.GetSmsApiKey)
我是否需要.Exclude<MessageRepository>()为多个类编写如果我需要这样做,如
.Exclude<ARepository>()
.Exclude<BRepository>()
.Exclude<CRepository>() ?
并且对于1和2是否需要单独的手动绑定?或者1可以使用BindToSelf()' and.Configure(b => b.InRequestScope())` ?
c# dependency-injection ninject ninject-extensions ninject.web.mvc