首页 > 解决方案 > ASP.NET MVC 访问被拒绝(检索具有 CLSID 的组件的 COM 类工厂)

问题描述

当我单击一个按钮以通过 jquery 调用在我的控制器中发布一个函数时,我遇到了这个错误:

JS代码:

 $.post("/generer", {
            lieu: $("#lieu").val(),
            date: $("#date").val(),
            grade: $("#grade").val(),
            nom: $("#nom").val(),
            peloton: $("#peloton").val(),
            objet: $("#objet").val(),
            first_para: $("#first_para").val(),
            second_para: $("#second_para").val(),
            ordre: $("#ordre").val()
        }).done(function (data) {
            if(data != "Erreur")
            {
                file = data;
                $("#centerdiv").css("display", "none");
                $("#div_m").css("display", "block");
            }
            else { alert(data);}
        });
    }

我在控制器中调用的 C# 函数只是打开 un word 文件以将我在 js 脚本中获得的所有数据输入书签。我有一个 RouteConfig 文件:

 routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Home",
            url: "",
            defaults: new { controller = "Home", action = "Index" }
        );



        routes.MapRoute(
            name: "Generer",
            url: "generer",
            defaults: new { controller = "Home", action = "CreateDoc" }
        );

        routes.MapRoute(
            name: "SendMail",
            url: "mail",
            defaults: new { controller = "Home", action = "SendMail" }
        );

在通过 VS 进行调试时,它工作正常,但是当我在 IIS 中发布网站时,加载的第一页(基本上是一个表单)但是当我单击调用上面 js 函数的按钮时,我在浏览器控制台中出现错误:

POST http://localhost:88/generer 500 (Internal Server Error)

当我单击此链接时,我收到此错误:

由于以下错误,检索具有 CLSID {000209FF-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败:80070005 访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.UnauthorizedAccessException:检索具有 CLSID {000209FF-0000-0000-C000-000000000046} 的组件的 COM 类工厂失败,原因是以下错误:80070005 访问被拒绝。(来自 HRESULT 的异常:0x80070005 (E_ACCESSDENIED))。

ASP.NET 无权访问请求的资源。考虑向 ASP.NET 请求标识授予对资源的访问权限。ASP.NET 有一个基本进程标识(通常是 IIS 5 上的 {MACHINE}\ASPNET 或 IIS 6 和 IIS 7 上的网络服务,以及 IIS 7.5 上配置的应用程序池标识),如果应用程序不是模拟的,则使用该标识。如果应用程序通过 模拟,则身份将是匿名用户(通常是 IUSR_MACHINENAME)或经过身份验证的请求用户。

要授予 ASP.NET 对文件的访问权限,请在文件资源管理器中右键单击该文件,选择“属性”并选择“安全”选项卡。单击“添加”以添加相应的用户或组。突出显示 ASP.NET 帐户,然后选中所需访问权限的复选框。

我试图授予权限,但我真的不知道我必须向哪个用户授予权限。

我还注意到,当我发布这个项目时,并非所有文件和文件夹都复制到 wwwroot 中。与我的其他项目相反,所有文件和文件夹都被复制到 wwwroot。包括routeconfig控制器文件等...不适用于这个项目我不知道为什么

标签: c#asp.netiismodel-view-controller

解决方案


推荐阅读