加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

自KB4338419以来,无法再从Classic ASP创建C#COM对象

发布时间:2020-12-16 09:29:03 所属栏目:asp.Net 来源:网络整理
导读:参见英文答案 How do I properly instantiate 32-bit COM objects in classic ASP after installing Windows Update KB4340558?????????????????????????????????????5个 我们最近在Classic ASP应用程序中遇到了一个问题,它依赖于一组C#COM组件,并且已经确定
参见英文答案 > How do I properly instantiate 32-bit COM objects in classic ASP after installing Windows Update KB4340558?????????????????????????????????????5个
我们最近在Classic ASP应用程序中遇到了一个问题,它依赖于一组C#COM组件,并且已经确定KB4338419中引入的更改已经破坏了我们的东西!

我们已将问题简化为要点:

创建了最简单的C#COM库:

using System;
using System.Runtime.InteropServices;

namespace TestComObject
{
    [ComVisible(true)]
    [Guid("B5C7370F-0EB5-4279-885C-9C169F9CBAA5")]
    [ClassInterface(ClassInterfaceType.None)]
    public class Class1
    {
        public string GetString()
        {
            return Guid.NewGuid().ToString("D");
        }
    }
}

使用RegAsm / codebase在服务器上注册它

创建了最简单的ASP脚本来使用它:

<%
    Const COM_OBJECT_NAME = "TestComObject.Class1"
    Dim co
    Set co = Server.CreateObject(COM_OBJECT_NAME)
    Response.Write co.GetString()
%>

访问该页面时,我们看到:

Microsoft VBScript runtime error '800a01ad'

ActiveX component can't create object

/Default.asp,line 4

Web应用程序在IIS(8)中运行,位于专用的非priveleged用户帐户下. (实际)代码运行良好多年,权限有限.
如果我将用户添加到Administrators组,则实例化COM对象.作为普通用户,页面/代码失败.如果我将progID更改为non.Net库,一切正常

文件系统权限很好.如果我写一个.vbs等价物并作为非特权用户执行,一切正常.

KB4338419的文章暗示对.Net COM对象如何实例化或访问进行了一些安全性更改,并且可以理解的是没有详细说明,我可以相信我们做错了什么或者做了一些现在认为必不可少的事情,但我找不到任何暗示我们应该做的事情的信息!

非常感谢您的帮助!
蒂姆

解决方法

请查看更改匿名用户是否符合您的应用程序池标识可以解决问题:

enter image description here

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读