Stuck migrating to new style console extension (Configuration Manager 2203).

baohan 1 Reputation point
2022-06-11T09:16:00.707+00:00

I'm tring to migrating old console extensions to the new style, but I'm not sure if I have packed the CAB file correctly.
Here is Manifest.xml and node.xml.

<CustomExtensionManifest ExtensionID="678ACD1E-5616-4656-91A3-90FFA20F17FA" Name="超聚变" Description="XFUSION" Version="1.3" Author="XFUSION">  
    <Deployments>  
        <NodeExtensionDeployment ParentNode="f10d0965-4b26-4e37-aab5-5400fbbc8eaa">  
            <FileList>  
                <File Name="xFusion_zh-cn.xml">  
                    <Hash Algorithm="sha256">7df12842ef993102a1e71b16b424dbdaf2dee859c82e029588bb4c28fd0f946c</Hash>  
                </File>  
            </FileList>  
        </NodeExtensionDeployment>  
        <CabExtensionDeployment>  
            <FileList>  
                <File Name="Output.cab">  
                    <Hash Algorithm="sha256">ee31537178b1245e5cf0cb02e57187df0ab64302c7e3f8a85000a3dba08b61a7</Hash>  
                </File>  
            </FileList>  
        </CabExtensionDeployment>  
    </Deployments>  
</CustomExtensionManifest>  

210492-image.png

In addition, I put DLL files, JS files and other files in ouput.cab.
Here is my cab file structure.

210437-image.png
When I import this cab file, Configuration Manager sometimes prompts that the operation times out, and sometimes reports an OutOfMemoryException.
Here is the SmsAdminUI.log.

[13, PID:9196][06/08/2022 19:28:54] :System.Net.WebException: 操作超时  
[13, PID:9196][06/08/2022 19:28:54] :Failed to get a response for OData POST request: https://mem.plugin.xfusion.com/AdminService/v1.0/ConsoleExtensionMetadata/AdminService.UploadExtensionInChunks  
[13, PID:9196][06/08/2022 19:28:54] :Microsoft.ConfigurationManagement.ManagementProvider.ODataConnectionException\r\nTimeout\r\n   在 Microsoft.ConfigurationManager.CloudBase.ODataServiceCaller.ODataServiceCaller.HandleException(Exception ex, Uri requestUri, String httpMethod)  
   在 Microsoft.ConfigurationManager.CloudBase.ODataServiceCaller.ODataServiceCaller.ExecutePost(String queryUrl, ICollection`1 extraHeaders, String postBody)  
   在 Microsoft.ConfigurationManagement.ManagementProvider.ODataQueryEngine.ODataConnectionManager.ExecuteMethod(String address, String body)  
   在 Microsoft.ConfigurationManagement.AdminConsole.UpdateInstallation.ChooseExtensionFileControl.PostApply(BackgroundWorker worker, DoWorkEventArgs e)\r\n操作超时  
\r\nSystem.Net.WebException\r\n操作超时\r\n   在 System.Net.HttpWebRequest.GetResponse()  
   在 Microsoft.ConfigurationManager.CloudBase.ODataServiceCaller.HttpCallerWithCustomCertValidation.HttpPostRequest(Uri address, ICollection`1 extraHeaders, Byte[] body)  
   在 Microsoft.ConfigurationManager.CloudBase.ODataServiceCaller.ODataServiceCaller.ExecutePost(String queryUrl, ICollection`1 extraHeaders, String postBody)\r\n  

----------

[10, PID:3928][06/09/2022 16:18:21] :System.OutOfMemoryException\r\n引发类型为“System.OutOfMemoryException”的异常。\r\n   在 Newtonsoft.Json.JsonTextReader.PrepareBufferForReadData(Boolean append, Int32 charsRequired)  
   在 Newtonsoft.Json.JsonTextReader.ReadData(Boolean append, Int32 charsRequired)  
   在 Newtonsoft.Json.JsonTextReader.ReadStringIntoBuffer(Char quote)  
   在 Newtonsoft.Json.JsonTextReader.ParseString(Char quote, ReadType readType)  
   在 Newtonsoft.Json.JsonTextReader.ParseValue()  
   在 Newtonsoft.Json.JsonTextReader.Read()  
   在 Newtonsoft.Json.JsonWriter.WriteToken(JsonReader reader, Boolean writeChildren, Boolean writeDateConstructorAsDate, Boolean writeComments)  
   在 Newtonsoft.Json.Linq.JTokenWriter.WriteToken(JsonReader reader, Boolean writeChildren, Boolean writeDateConstructorAsDate, Boolean writeComments)  
   在 Newtonsoft.Json.JsonWriter.WriteToken(JsonReader reader, Boolean writeChildren)  
   在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateJToken(JsonReader reader, JsonContract contract)  
   在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue)  
   在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)  
   在 Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType)  
   在 Newtonsoft.Json.JsonConvert.DeserializeObject(String value, Type type, JsonSerializerSettings settings)  
   在 Newtonsoft.Json.JsonConvert.DeserializeObject[T](String value, JsonSerializerSettings settings)  
   在 Microsoft.ConfigurationManager.CloudBase.ODataServiceCaller.ODataServiceCaller.GetJObjectFromHttpWebResponse(HttpWebResponse response)  
   在 Microsoft.ConfigurationManager.CloudBase.ODataServiceCaller.ODataServiceCaller.ExecutePost(String queryUrl, ICollection`1 extraHeaders, String postBody)  
   在 Microsoft.ConfigurationManagement.ManagementProvider.ODataQueryEngine.ODataConnectionManager.ExecuteMethod(String address, String body)  
   在 Microsoft.ConfigurationManagement.AdminConsole.UpdateInstallation.ChooseExtensionFileControl.PostApply(BackgroundWorker worker, DoWorkEventArgs e)\r\n  

So, What's wrong with my extension?
Thanks.

Microsoft Configuration Manager
0 comments No comments
{count} votes

1 answer

Sort by: Most helpful
  1. AllenLiu-MSFT 47,166 Reputation points Microsoft Vendor
    2022-06-13T06:37:55.387+00:00

    Hi, @baohan

    Thank you for posting in Microsoft Q&A forum.

    Have we enabled the "Hierarchy approved console extensions can be unsigned" option?
    https://learn.microsoft.com/en-us/mem/configmgr/core/servers/manage/import-admin-console-extensions#bkmk_allow-unsigned


    If the answer is the right solution, please click "Accept Answer" and kindly upvote it. If you have extra questions about this answer, please click "Comment".
    Note: Please follow the steps in our documentation to enable e-mail notifications if you want to receive the related email notification for this thread.


Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.