RIA 服务 Visual Studio 2010 Beta2 中的 Windsor IHandlerSelector
我想使用 Windsor 实现多租户,但我不知道如何处理这种情况:
我成功使用了 这种技术在普通的 ASP.NET MVC 项目中的应用和在 RIA 服务项目中的合并是类似的。
因此,我使用了 IHandlerSelector,注册了一些组件并编写了一个 ASP.NET MVC 视图来验证它在普通 ASP.NET MVC 环境中的工作情况。确实如此!
下一步是创建一个 DomainService,它在构造函数中注入了一个 IRepository。该服务托管在 ASP.NET MVC 应用程序中。它实际上...有效:我可以将数据从中获取到 Silverlight 应用程序。
示例片段:
public OrganizationDomainService(IRepository<Culture> cultureRepository)
{
this.cultureRepository = cultureRepository;
}
最后一步是看看它是否可以像多租户一样工作:它不能!奇怪的是: 使用一些代码行并在日志文件中写入调试消息,我验证了是否选择了正确的处理程序!但这个处理程序似乎没有被注入到 DomainService 中。我总是得到第一个处理程序(这是我的 SelectHandler 中的逻辑)
任何人都可以验证此行为吗?注入在 RIA 服务中不起作用吗?或者我错过了一些基本的东西?
开发环境:Visual Studio 2010 Beta2
提前致谢
I want to implement multi tenancy using Windsor and i don't know how to handle this situation:
i succesfully used this technique in plain ASP.NET MVC projects and thought incorporating in a RIA Services project would be similar.
So i used IHandlerSelector, registered some components and wrote an ASP.NET MVC view to verify it works in a plain ASP.NET MVC environment. And it did!
Next step was to create a DomainService which got an IRepository injected in the constructor. This service is hosted in the ASP.NET MVC application. And it actually ... works:i can get data out of it to a Silverlight application.
Sample snippet:
public OrganizationDomainService(IRepository<Culture> cultureRepository)
{
this.cultureRepository = cultureRepository;
}
Last step is to see if it works multi-tenant-like: it does not! The weird thing is this:
using some line of code and writing debug messages in a log file i verified that the correct handler is selected! BUT this handler seems not to be injected in the DomainService. I ALWAYS get the first handler (that's the logic in my SelectHandler)
Can anybody verify this behavior? Is injection not working in RIA Services? Or am i missing something basic??
Development environment: Visual Studio 2010 Beta2
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
所以看来我在 OrganizationDomainServiceFactory 中做了一件非常奇怪的事情。
不起作用的代码是这样的:
这显然不起作用,因为创建了一个新的容器(这不应该发生)。
好的!所以我想我尝试使用 ServiceLocator 来获取对 Windsor 容器的引用(在 WindsorControllerFactory 中使用 - 这就是我在 ASP.NET MVC 应用程序启动时的称呼),并将代码更改为:
你猜怎么着:它可以工作(!!!)多租户,因为它应该是这样!
我唯一不知道的是:是否有另一种方法来“注入”容器(构造函数注入似乎在这里不起作用,编译器抱怨)
顺便说一句:将项目从 VS2010Beta2 移动到 VS2010RC(具有 RIA 服务支持),但是这应该不会影响结果!
So it seems i did a very weird thing in my OrganizationDomainServiceFactory.
The code which did NOT work is this:
This is apparently not working, because of the creation of a new Container (which should not take place).
OK! So i thought i try to use ServiceLocator to get a reference to the Windsor Container (used in the WindsorControllerFactory - that's how i call it ... in the boot up of the ASP.NET MVC application), and changed the code to this:
and guess what: it works(!!!) multi-tenancy as it should be!
The only thing i don't know is: is there another way to "inject" the container (constructor injection seems not to work here , the compiler complains)
BTW: moved the project from VS2010Beta2 to VS2010RC (with RIA Services support), but this should not affect the outcome!
是的,我已经看到了这个线程,并且我已经实现了这个。
首先请记住,我在 Global.asax.cs 中使用了这一行来使 RIA 服务正常运行(托管在 ASP.NET MVC 视图中),
这是一些代码:
这是完整的 web.config。注意注册 OrganizationDomainServiceFactory (它是您提到的文章的实现)
希望这已经足够了。如果您想要完整的项目,我可以向您发送一份副本(这是一个预生产测试项目)。
非常感谢您花费的时间!
Yes i have seen this thread and i already have implemented this.
Firstly have in mind that i have used this line in Global.asax.cs to get the RIA services properly behave (hosted in an ASP.NET MVC view)
Here is some code:
Here is the complete web.config. Notice registering the OrganizationDomainServiceFactory (it is the implementation of the article you mentioned)
Hope this is enough. In case you would like to have the complete project i can send you a copy (this is a pre-production test project).
Thank you very much for the time you spend!