错误代码0x800700b7是啥情况

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了错误代码0x800700b7是啥情况相关的知识,希望对你有一定的参考价值。

安装时候出现错误代码0x800700b7,确保文件存在,是什么原因

1、安装Windows7系统出现错误代码0x800700B7的解决方法

第一步:更改设置,显示系统的隐藏文件和文件夹。

左键单击:资源管理器 - 组织 - 文件夹和搜索选项 - 查看,找到:显示隐藏的文件、文件夹和驱动器,并左键点击选中,然后点击:应用 - 确定。

2、第二步:添加组或用户名:SYSTEM,或者修改SYSTEM的权限。

打开计算机 - C盘 - 用户 - gong - AppData - Local - Temp;

3、右键单击:Temp - 属性 - 安全;

4、在Temp属性安全窗口点击:编辑;

5、在弹出的窗口点击:添加;

6、这时会弹出选择用户或组的窗口,再输入对象名称来选择(E)栏中输入:SYSTEM,再点击:确定。

7、回到Temp属性窗口,选择:SYSTEM,在SYSTEM的权限(P)栏中的完全控制和修改的允许小方框内点击打上勾,再点击:应用 - 确定;

8、回到Temp属性的安全窗口再点击:确定。

9、第三步:重启计算机,再进行Windows 7系统的安装。

参考技术A 设置的不对,所以重装系统过程报错,如果你装的是微软原版,你可以:

具体操作如下:

1.计算机-组织-文件夹和搜索选项-查看-将"隐藏受保护的系统操作文件"前的复选框去掉并将"显示文件、文件夹和驱动器"前的复选框选上-确定.

2.C-用户-xxx(用户名)-AppData-Local-Temp-右键-属性-安全-添加-选择用户或组-在"输入对象名称来选择"下写上"SYSTEM"-确定.

3.回到Temp属性界面-选择"SYSTEM"-将SYSTEM的权限下的"完全控制"和"修改"前的复选框选上-确定.

4.回到Temp属性界面-确定.
参考技术B 尊敬的联想用户您好,根据您的提示,可能是电脑的安装程序出现错误引起的,建议您尝试重新下载程序的安装文件,再观察运行情况。本回答被提问者和网友采纳

在错误情况下从 WebClient 获取响应正文的正确方法是啥?

【中文标题】在错误情况下从 WebClient 获取响应正文的正确方法是啥?【英文标题】:What's the correct way to get the response body from a WebClient in an error case?在错误情况下从 WebClient 获取响应正文的正确方法是什么? 【发布时间】:2019-11-09 13:48:36 【问题描述】:

我是 WebClient 和响应式编程的新手。我想从请求中获取响应正文。如果发生错误,必须记录 http 代码、标头和正文,但仍应返回正文。

经过大量挖掘和谷歌搜索,我找到了两种解决方案。但在我看来,两者都过于复杂。有没有更简单的解决方案?

留在Mono 我找到了这个解决方案:

public Mono<String> log(ProtocolLine protocolLine) 
    return webClient.post()
            .uri("/log")
            .body(BodyInserters.fromObject(protocolLine))
            .exchange()
            .flatMap(clientResponse -> 
                Mono<String> stringMono = clientResponse.bodyToMono(String.class);
                CompletableFuture<String> stringCompleteFuture = new CompletableFuture<String>();
                Mono<String> bodyCompletedMono = Mono.fromFuture(stringCompleteFuture);
                if (clientResponse.statusCode().isError()) 
                    stringMono.subscribe(bodyString -> 
                        LOGGER.error("HttpStatusCode = ", clientResponse.statusCode());
                        LOGGER.error("HttpHeaders = ", clientResponse.headers().asHttpHeaders());
                        LOGGER.error("ResponseBody = ", bodyString);
                        stringCompleteFuture.complete(bodyString);
                    );
                

                return bodyCompletedMono;
            );

基于Flux,它需要更少的代码。但如果我知道只会有一个结果,我想我不应该使用 Flux。

public Flux<String> log(ProtocolLine protocolLine) 
    return webClient.post()
            .uri("/log")
            .body(BodyInserters.fromObject(protocolLine))
            .exchange()
            .flux()
            .flatMap(clientResponse -> 
                Flux<String> stringFlux = clientResponse.bodyToFlux(String.class).share();
                if (clientResponse.statusCode().isError()) 
                    stringFlux.subscribe(bodyString -> 
                        LOGGER.error("HttpStatusCode = ", clientResponse.statusCode());
                        LOGGER.error("HttpHeaders = ", clientResponse.headers().asHttpHeaders());
                        LOGGER.error("ResponseBody = ", bodyString);
                    );
                

                return stringFlux;
            );

【问题讨论】:

【参考方案1】:

这两种解决方案都是丑陋和错误的。您几乎不应该在反应式管道的中间订阅。订阅者通常是调用客户端,而不是您自己的应用程序。

    public Mono<String> log(ProtocolLine protocolLine) 
    return webClient.post()
            .uri("/log")
            .body(BodyInserters.fromObject(protocolLine))
            .exchange()
            .flatMap(clientResponse -> clientResponse.bodyToMono(String.class)
                .doOnSuccess(body -> 
                    if (clientResponse.statusCode().isError()) 
                        log.error("HttpStatusCode = ", clientResponse.statusCode());
                        log.error("HttpHeaders = ", clientResponse.headers().asHttpHeaders());
                        log.error("ResponseBody = ", body);
                    
            ));

在这里你可以看到思维方式。我们总是使用我们的clientResponse 并将它的主体映射到一个字符串。然后,当订阅者(我们的调用客户端)使用此 Mono 时,我们 doOnSuccess 并检查状态代码是否有错误,如果是这种情况我们记录。

doOnSuccess 方法返回 void,因此它不会“消耗”单声道或任何东西,它只是在这个 Mono 说它“本身有东西”时触发一些东西,当它“完成”时,可以说。

这可以与Flux 以相同的方式使用。

【讨论】:

感谢您的回答。如果出现错误,我可以知道如何抛出异常。 @ThomasAndolf 如果使用retrieve() 而不是exchange(),你会怎么做?并且成功响应和错误响应包含不同的类型(成功返回SuccessResponse.class,错误返回ErrorResponse.class,都序列化成json)? 您使用onStatus 方法,如官方文档所示。 docs.spring.io/spring/docs/current/spring-framework-reference/… 然后你要求的是你想从同一个函数返回 2 种不同类型的对象。您不能从同一函数返回(例如)String 或 Int。如果您阅读反应器文档,您会返回一个单声道错误(包含 say en 异常或其他内容),然后在链中稍后会出现 .doOnError 在 Spring 5 中,exchange() 已被弃用:是否有另一种方法可以在发生错误时获取正文?使用retrieve() 或exchangeToMono(),我就是搞不定。 ExchangeToMono(response -> ...) 给你一个响应,你可以做任何你想做的事

以上是关于错误代码0x800700b7是啥情况的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 错误 500.19 - Internal Server Error错误代码0x800700b7 怎么解决

Windows 无法安装所需的文件。 请确保安装所需的所有文件可用,并重新启动安装。 错误代码: 0x800700B7

错误代码: 0x800700b7 配置错误:定义了重复的“system.web.extensions/scripting/scriptResourceHandler”节

安装 Windows 和 Configuration Manager 步骤报错0x800700B7

IIS Express - 'fileExtension' 的'mimeMap' 上的 HTTP 错误 500.19 0x800700b7 设置为 '.svg'

thinkpad t470。Win10。应用容器配置文件失败,错误为 0x800700B7,因为无法注册 AppContainer SID。