EPR类企业管理系统

在我们现有系统基础上或全新开发,提供定制服务
为您的企业高效快速实施ERP,WMS,MES,CRM管理系统
全面管控物料仓库、销售业务、采购业务、仓库业务
生产过程、质量检验、组织架构、业务报表


定制
QQ:460-3528

开发
QQ群:3360-90194

源码
微信:136-3650-3721

中级信任支持(已淘汰)

重点

我们不保证部分信任环境下产品的正确操作。有关更多信息,请参阅XAF ASP.NET应用程序中不再支持Medium Trust

XAF允许您创建可以在“中等信任”权限级别工作的ASP.NET应用程序。本文档描述了在需要中等信任权限级别的Web主机上部署使用XAF构建的ASP.NET应用程序的要求和限制。

如何为中等信任环境准备XAF应用程序

要在“中等信任”权限级别部署XAF应用程序,请执行以下操作。

  1. 如果您在应用程序中使用DevExpress.Persistent.BaseImpl程序集,请执行以下操作。

    • 在Visual Studio中打开%PROGRAMFILES(x86)%\ DevExpress 19.2 \ Components \ Sources \ DevExpress.Persistent \ DevExpress.Persistent.BaseImpl \ DevExpress.Persistent.BaseImpl.csproj项目。调用项目的“属性”窗口。在“签名”选项卡中,选中“对程序集签名”选项以为程序集生成公共密钥。
    • 将“ #define MediumTrust”预处理程序指令添加到应用程序中使用的每个业务类的代码中,例如BaseObject.csPerson.cs等。
    • 重建XAF源。为此,请使用“如何从源代码KB重建程序集”一文中的说明。
  2. Web.config文件中,设置以下选项:

    <system.web>
       <trust level="Medium" originUrl="" />
    </system.web>
    

    有关详细信息,请参考MSDN中的信任元素(ASP.NET设置架构)主题。

  3. 确保Web.config文件中sectionGroup元素下的所有节的requirePermission属性都设置为false

    <configSections>
        <sectionGroup name="devExpress">
            <section name="compression" requirePermission="false" 
                type="DevExpress.Web.ASPxClasses.CompressionConfigurationSection, DevExpress.Web.v,
                Version=.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
            <section name="themes" requirePermission="false" 
                type="DevExpress.Web.ASPxClasses.ThemesConfigurationSection, DevExpress.Web.v, 
                Version=.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
            <section name="settings" requirePermission="false" 
                type="DevExpress.Web.ASPxClasses.SettingsConfigurationSection, DevExpress.Web.v,
                Version=.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
        </sectionGroup>
    </configSections>
    
  4. 如果使用XPO,请在Global.asax.cs(Global.asax.vb)文件中的Application_Start方法中,将静态XpoDefault.UseFastAccessors属性设置为false,并将静态XpoDefault.IdentityMapBehavior属性设置为Strong

    public class Global : System.Web.HttpApplication {
       protected void Application_Start(object sender, EventArgs e) {
          XpoDefault.UseFastAccessors = false;
          XpoDefault.IdentityMapBehavior = IdentityMapBehavior.Strong; 
       }
       //...
    }
    
  5. 重写GetModelAssemblyFilePathGetModulesVersionInfoFilePath你的方法的WebApplication位于后代WebApplication.csWebApplication.vb)文件。

    using System.Web;
    // ...
    protected override string GetModelAssemblyFilePath() {
        if((HttpContext.Current != null) && (HttpContext.Current.Server != null)) {
            return System.IO.Path.Combine(
                HttpContext.Current.Server.MapPath(""), ModelAssemblyFileName);
        }
        return base.GetModelAssemblyFilePath();
    }
    protected override string GetModulesVersionInfoFilePath() {
        if((HttpContext.Current != null) && (HttpContext.Current.Server != null)) {
            return System.IO.Path.Combine(
                HttpContext.Current.Server.MapPath(""), ModulesVersionInfoFileName);
        }
        return base.GetModulesVersionInfoFilePath();
    }
    
  6. 以完全信任模式启动您的应用程序。这可以在您的本地开发环境中完成。完成此操作后,将在应用程序文件夹中生成ModulesVersionInfoModelAssembly文件。部署后,这些程序集应复制到网站根目录。
    注意

    ModulesVersionInfoModelAssembly.dll文件绑定到你的应用程序中使用的所有模块的最新版本。因此,如果您修改应用程序,则需要重新生成并重新部署这些程序集。

完成上述步骤后,您的应用程序就可以在中等信任环境中使用了。

注意

您可以以“完全信任”权限级别创建和更新应用程序的数据库。使用DBUpdater.v .exe,以在部署新版本之前创建或更新应用程序的数据库。默认情况下,此工具位于%PROGRAMFILES(x86)%\ DevExpress 19.2 \ Components \ Tools \ eXpressAppFramework \ DBUpdater \ DBUpdater.v 19.2 .exe路径中。

中度信任限制

  • 不支持Reports V2模块数据透视图模块打印系统随附的内置“导出操作”和“导出”功能。
  • 持久对象的所有构造函数/属性/字段都必须具有“公共”访问修饰符,以便XPO可以在不使用反射的情况下访问它们。有关详细信息,请参考XpoDefault.UseFastAccessors主题。

    例如,您可以通过以下方式声明属性。

    private string nickName;
    public string NickName {
       get {
          return nickName;
       }
       set {
          SetPropertyValue(nameof(NickName), ref nickName, value);
       }
    }
    

    但是,您不能实现如下所示的属性,因为只读属性不会保留,并且XPO无法在“中等信任”权限级别访问私有字段。

    [Persistent]
    private string nickName;
    public string NickName {
       get {
          return nickName;
       }
    }
    

    出于相同的原因,仅应声明公共类。

  • 以下代码(使用了Delayed属性)不适用于中等信任级别。

    private XPDelayedProperty fRtf = new XPDelayedProperty();
    [Delayed(nameof(fRtf)), ValueConverter(typeof(StringCompressionConverter))]
    public string Rtf {
       get { return (string)fRtf.Value; }
       set {
          fRtf.Value = value;
          OnChanged();
       }
    }
    

    请使用以下代码。

    [Delayed, ValueConverter(typeof(StringCompressionConverter))]
    public string Rtf {
       get { return GetDelayedPropertyValue<string>(nameof(Rtf)); }
       set {
          SetDelayedPropertyValue<string>(nameof(Rtf), value);
          OnChanged();
       }
    }
    

.NET框架中还存在其他限制。您可以在如何:在ASP.NET 2.0 MSDN中使用中等信任度中了解有关它们的更多信息。

有关信任级别的更多信息,请参考MSDN中的ASP.NET信任级别和策略文件文档。

相关文章

转载保留此链接,注明出处