gpt4 book ai didi

asp.net - 在 Azure 网站中加载/反射(reflect)自定义程序集

转载 作者:行者123 更新时间:2023-12-03 03:15:56 25 4
gpt4 key购买 nike

我们在 Azure 网站上使用 ASP.Net,我想知道如何从我的代码隐藏类中加载自定义程序集。

这个想法是将业务规则放在 dll 中,复制到站点上的已知子文件夹中,可以读取并反射(reflect)该子文件夹。 (业务规则将符合已知的接口(interface)。)

对于第二个或第三个网站,一切都保持不变,除了为这些客户端定制的 dll 之外。然后我们会反射(reflection)大会并调用他们的定制规则。

如果站点位于本地机器上,我们可以执行诸如 Assembly.LoadFrom() 之类的操作,并传入相对文件路径或使用已知的方法和技术将虚拟路径映射到物理路径。

但是,如果站点位于 Azure 中,我不知道物理路径在计算机上是如何布局的?

如果使用 MEF 做这样的事情更容易,我也愿意尝试。但基本思想是告诉反射或 MEF 从位置 X 加载程序集,其中 X 是网站上的子文件夹。

最佳答案

您可以使用Assembly.Load()您可以传递字节数组而不是文件。最简单且最具成本效益的方法是使用 blob storage 存储此自定义 dll。 :

        CloudStorageAccount storageAccount = CloudStorageAccount.DevelopmentStorageAccount;

// Create the blob client.
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();

// Retrieve a reference to a container.
CloudBlobContainer container = blobClient.GetContainerReference("test");
// blob reference, you can use what ever name you want
var blobReference = container.GetBlobReferenceFromServer("customRules.dll");
var assemblyBytes = new byte[blobReference.Properties.Length];
blobReference.DownloadToByteArray(assemblyBytes, 0);
var assembly = Assembly.Load(assemblyBytes);

关于asp.net - 在 Azure 网站中加载/反射(reflect)自定义程序集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26569943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com