我有一个MVC基于云的项目,目前支持两种文化,瑞典和法国
现在,根据我的客户,我希望根据他的文化创建资源文件
现在问题是我不想重新部署到Azure云,但仍想动态添加我的资源文件
是否可以使用远程桌面将特定文化的Dll直接复制到Azure
我试过这是我的本地机器而且失败了,但是当我编译我的解决方案时,新的Dll被添加到Bin文件夹为新文化工作
什么是基于云的本地化的最佳方法,其中数据库命中是一个主要问题,因为它很昂贵
答案 0 :(得分:3)
作为MikeWo解决方案的替代方案,您可以查看创建自定义 ResourceProviderFactory 。有an example on MSDN向您展示如何创建可以加载外部程序集的示例ExternalResourceProviderFactory。
您可以修改此类并让它从blob存储中下载程序集。创建自定义ResourceProviderFactory后,您只需将其添加到您的web.config,无需使用启动任务:
<globalization uiCulture="auto" culture="auto"
resourceProviderFactoryType="CustomResourceProviders.ExternalResourceProviderFactory, CustomResourceProviders, Version=1.0.0.0, Culture=neutral, PublicKeyToken=f201d8942d9dbbb1" />
答案 1 :(得分:0)
我建议将附属程序集存储在BLOB存储中,让应用程序使用后台任务定期从特定BLOB容器中获取所有程序集。您可以在Web角色唤醒时查看后台进程并查看BLOB容器,以及查看它在bin文件夹中具有的附属程序集。如果它在BLOB容器中找到一个新的程序集(或更新的程序集),它可以将其拉下来。
我很长时间没有使用过卫星装配,所以我不确定你是否可以更新一个正在使用的卫星装配,或者如果他们刚开始工作就把你的新装置丢弃。如果这种“热插拔”方法不起作用,那么你至少可以在启动任务中使用类似的逻辑从BLOB存储中获取程序集,然后只执行服务配置的更新(处理RoleEnvrionmentChanging事件) 。这不是一个完全重新配置的想法。
答案 2 :(得分:0)
请勿使用RDP更改解决方案。从长远来看,它不会起作用。(如果内部出现任何问题,Azure可以使用cspkg恢复应用程序,在这种情况下,通过RDP完成的更改将不会反映出来) 您可以尝试将资源文件放在Azure blob中,并在需要时选择它。