OfficeDev / Office-Addin-Scripts

A set of scripts and packages that are consumed in Office add-ins projects.
MIT License
152 stars 93 forks source link

"Icon URL Unreachable" error but URL is reachable (while validating manifest.xml) #835

Closed crcastle closed 4 months ago

crcastle commented 4 months ago

Expected behavior

I expect the "Icon URL Unreachable" error to not be shown because the URL is reachable.

Current behavior

Running npm run validate -- -p fails with the following error:

~/Desktop/WinShared/Saas Cap Data main*
❯ npm run validate -- -p

> excel-custom-functions-js@0.0.1 validate
> office-addin-manifest validate manifest.xml -p

Validation Information: 
Package Type Identified: Package of your add-in was parsed successfully.

Correct Package: Your package matches the submission type.

Valid Manifest Schema: Your manifest does adhere to the current set of XML schema definitions for Add-in manifests.

Manifest Version Correct Structure: The manifest version number has the correct structure for the platform that it supports.

Manifest Version Correct Value: The manifest version number is greater or equal to 1.0.

Manifest ID Valid Prefix: The product ID in the manifest has a valid prefix
  - Details: d348c7c2-36c5-49cc-a8a2-ea185b8427ec

Manifest ID Correct Structure: The structure of the product ID is correct.
  - Details: d348c7c2-36c5-49cc-a8a2-ea185b8427ec

Desktop Source Location Present: A desktop or default source location URL is found.

Secure Desktop Source Location: The manifest desktop source location URLs use HTTPS.

The manifest source location URLs are valid.: The manifest source location URLs are valid.

Supported Office Identified: Supported Office products were successfully determined.

Support URL Present: The manifest support URL is present.
  - Details: https://crcastle.github.io/saascap-data/assets/help/

Valid and reachabe Support URL: The manifest support URL is valid and reachable.
  - Details: https://crcastle.github.io/saascap-data/assets/help/

Valid OnlineMeetingCommandSurface ExtensionPoint.: OnlineMeetingCommandSurface ExtensionPoint extracted from manifest is found to be valid.

Valid Manifest Resource Urls: The manifest Resource URLs are valid.

Valid Manifest AppDomain Urls: The manifest AppDomain URLs are valid.

High Resolution Icon Present: A high resolution icon element was expected and is present.
  - Details: https://crcastle.github.io/saascap-data/assets/saascap-icon-64.png

Supported High Resolution Icon URL File Extension: The manifest high resolution icon URL has a valid image file extension.
  - Details: png

Secure High Resolution Icon URL: The manifest high resolution icon URL uses HTTPS.
  - Details: https://crcastle.github.io/saascap-data/assets/saascap-icon-64.png

Correct High Resolution Icon Dimensions: The manifest high resolution icon dimensions are correct.

Icon Present: A icon element was expected and is present.
  - Details: https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png

Supported Icon URL File Extension: The manifest icon URL has a valid image file extension.
  - Details: png

The manifest icon URL uses HTTPS.: Secure Icon URL
  - Details: https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png

All GetStarted strings are present in Resources: All GetStarted strings are present in Resources

Acceptance Test Completed: Acceptance test service has finished checking provided add-in.

Error #1: 
Icon URL Unreachable: Unable to retrieve an image from the icon URL.
  - Details: The IconURL supplied in the app manifest is not reachable, IconURL : https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png.

The manifest is not valid.

~/Desktop/WinShared/Saas Cap Data main* 16s
❯❯

However, accessing https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png from both curl or a browser show that the PNG file is in fact reachable.

Here it is in-line in this GH issue pulled from that URL that the validation says is unreachable:

32x32 icon URL from IconURL manifest element

curl:

~/Desktop/WinShared/Saas Cap Data main*
❯ curl -v https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png
*   Trying 185.199.111.153:443...
* Connected to crcastle.github.io (185.199.111.153) port 443
* ALPN: curl offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
*  CAfile: /etc/ssl/cert.pem
*  CApath: none
* (304) (IN), TLS handshake, Server hello (2):
* (304) (IN), TLS handshake, Unknown (8):
* (304) (IN), TLS handshake, Certificate (11):
* (304) (IN), TLS handshake, CERT verify (15):
* (304) (IN), TLS handshake, Finished (20):
* (304) (OUT), TLS handshake, Finished (20):
* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256
* ALPN: server accepted h2
* Server certificate:
*  subject: C=US; ST=California; L=San Francisco; O=GitHub, Inc.; CN=*.github.io
*  start date: Feb 21 00:00:00 2023 GMT
*  expire date: Mar 20 23:59:59 2024 GMT
*  subjectAltName: host "crcastle.github.io" matched cert's "*.github.io"
*  issuer: C=US; O=DigiCert Inc; CN=DigiCert TLS RSA SHA256 2020 CA1
*  SSL certificate verify ok.
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: crcastle.github.io]
* [HTTP/2] [1] [:path: /saascap-data/assets/saascap-icon-32.png]
* [HTTP/2] [1] [user-agent: curl/8.4.0]
* [HTTP/2] [1] [accept: */*]
> GET /saascap-data/assets/saascap-icon-32.png HTTP/2
> Host: crcastle.github.io
> User-Agent: curl/8.4.0
> Accept: */*
> 
< HTTP/2 200 
< server: GitHub.com
< content-type: image/png
< permissions-policy: interest-cohort=()
< last-modified: Wed, 14 Feb 2024 22:19:51 GMT
< access-control-allow-origin: *
< etag: "65cd3c87-14c"
< expires: Wed, 14 Feb 2024 22:53:12 GMT
< cache-control: max-age=600
< x-proxy-cache: MISS
< x-github-request-id: 0E06:37212D:FD2A0:128BE7:65CD41FE
< accept-ranges: bytes
< date: Wed, 14 Feb 2024 22:43:53 GMT
< via: 1.1 varnish
< age: 41
< x-served-by: cache-bfi-krnt7300101-BFI
< x-cache: HIT
< x-cache-hits: 1
< x-timer: S1707950634.505313,VS0,VE2
< vary: Accept-Encoding
< x-fastly-request-id: e196149c71e2f208dd1c6b0aed3afd5866d61f0d
< content-length: 332
< 
Warning: Binary output can mess up your terminal. Use "--output -" to tell 
Warning: curl to output it to your terminal anyway, or consider "--output 
Warning: <FILE>" to save to a file.
* Failure writing output to destination
* Connection #0 to host crcastle.github.io left intact

~/Desktop/WinShared/Saas Cap Data main*
❯❯

Note that npm run validate does say the manifest is valid. However, I need npm run validate -- -p to be successful in order to submit my add-in to the Partner Center for listing in AppSource.

Also, I receive the same error when I upload this manifest.xml file to the Partner Center (screenshot) to submit the add-in to be published in AppSource.

Steps to Reproduce

Please provide detailed steps for reproducing the issue.

  1. Run npm run validate -- -p with the this manifest.xml file in the current directory
  2. Open a browser and paste in https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png to see that the PNG is in fact reachable.

Context

Please provide any relevant information about your setup. This is important in case the issue is not reproducible except for under certain conditions.

Here is a link to the manifest.xml file I'm using: https://gist.github.com/crcastle/a0a241b2ce87b5067cf288549b6be879

Failure Logs

See above.

crcastle commented 4 months ago

Did some research into how the manifest is validated when the -p flag is used. From these lines in the code for the office-addin-manifest package, I see that a web service at https://validationgateway.omex.office.net/package/api/check is being used to validate the manifest.

I replicated the request using curl and get the same error, so it seems that the issue here is with this service. Can you ask the team or person responsible for this web service if the error I'm seeing is the intended behavior?

Here is the output of the request using curl:

❯ curl -s -X POST 'https://validationgateway.omex.office.net/package/api/check?clientId=Default' \
      -H "Content-Type: application/xml" \
      --data-binary "@manifest.xml"
{"utcTimestamp":"2024-02-15T03:18:48.0571929+00:00","status":"Rejected","errors":[{"id":"1f9a991b-be34-49c5-939a-46b5170d7dbf","title":"Icon URL Unreachable","content":"Unable to retrieve an image from the icon URL.","code":"The IconURL supplied in the app manifest is not reachable, IconURL : https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png."}],"warnings":[],"notes":[{"id":"c5506d85-f984-41dd-ab09-78fd9f584de9","title":"Package Type Identified","content":"Package of your add-in was parsed successfully."},{"id":"0bf7e171-217e-40a1-98ad-1f0eaed9098b","title":"Correct Package","content":"Your package matches the submission type."},{"id":"8cf46fb0-8901-49c0-b3c2-15c3114425b4","title":"Valid Manifest Schema","content":"Your manifest does adhere to the current set of XML schema definitions for Add-in manifests."},{"id":"a95552d7-e476-4dd9-a58d-dcf4a246e7af","title":"Manifest Version Correct Structure","content":"The manifest version number has the correct structure for the platform that it supports."},{"id":"587a65ee-44a8-4412-9ccb-73201a8bf5a1","title":"Manifest Version Correct Value","content":"The manifest version number is greater or equal to 1.0."},{"id":"f7bca1c6-051e-405a-88bf-5df8d263f3f0","title":"Manifest ID Valid Prefix","content":"The product ID in the manifest has a valid prefix","code":"d348c7c2-36c5-49cc-a8a2-ea185b8427ec"},{"id":"69e8d286-0a0b-44af-8a41-0193391478f0","title":"Manifest ID Correct Structure","content":"The structure of the product ID is correct.","code":"d348c7c2-36c5-49cc-a8a2-ea185b8427ec"},{"id":"8968ae09-0f70-49b5-a839-5410639f65e5","title":"Desktop Source Location Present","content":"A desktop or default source location URL is found."},{"id":"19192530-7680-4f18-a68a-8bd07b656422","title":"Secure Desktop Source Location","content":"The manifest desktop source location URLs use HTTPS."},{"id":"cec06602-b4a7-40e4-aa50-a13a29a90584","title":"The manifest source location URLs are valid.","content":"The manifest source location URLs are valid."},{"id":"69150951-4963-4c4b-ae6b-58c07160e673","title":"Supported Office Identified","content":"Supported Office products were successfully determined."},{"id":"64f19c25-db3f-445a-8af8-a8dc02701d14","title":"Support URL Present","content":"The manifest support URL is present.","code":"https://crcastle.github.io/saascap-data/assets/help/"},{"id":"abd58ba2-327b-48b7-ad18-c567f963d859","title":"Valid and reachabe Support URL","content":"The manifest support URL is valid and reachable.","code":"https://crcastle.github.io/saascap-data/assets/help/"},{"id":"38e76e9c-314f-4759-b3fb-3afa252ce0c6","title":"Valid OnlineMeetingCommandSurface ExtensionPoint.","content":"OnlineMeetingCommandSurface ExtensionPoint extracted from manifest is found to be valid."},{"id":"987201dd-ea13-4dc3-9ead-190f6ea3fb36","title":"Valid Manifest Resource Urls","content":"The manifest Resource URLs are valid."},{"id":"145e9494-a40d-43aa-98fd-bbb76b430d2f","title":"Valid Manifest AppDomain Urls","content":"The manifest AppDomain URLs are valid."},{"id":"c658985f-8366-4495-9b82-0a534450c406","title":"High Resolution Icon Present","content":"A high resolution icon element was expected and is present.","code":"https://crcastle.github.io/saascap-data/assets/saascap-icon-64.png"},{"id":"718c518d-b110-4d7e-b9a5-d8430e94c96b","title":"Supported High Resolution Icon URL File Extension","content":"The manifest high resolution icon URL has a valid image file extension.","code":"png"},{"id":"79b5a5c9-cb79-40c2-b584-436ab550f030","title":"Secure High Resolution Icon URL","content":"The manifest high resolution icon URL uses HTTPS.","code":"https://crcastle.github.io/saascap-data/assets/saascap-icon-64.png"},{"id":"1ecd4300-6e81-4fbb-9437-499a4c725df9","title":"Correct High Resolution Icon Dimensions","content":"The manifest high resolution icon dimensions are correct."},{"id":"1ba2f086-5f1b-401d-8ad6-482cb6526616","title":"Icon Present","content":"A icon element was expected and is present.","code":"https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png"},{"id":"94330b32-277b-4292-9655-8acbc3ba6fd9","title":"Supported Icon URL File Extension","content":"The manifest icon URL has a valid image file extension.","code":"png"},{"id":"07780e16-8979-4fb8-b1c2-da8cfce1ed0c","title":"The manifest icon URL uses HTTPS.","content":"Secure Icon URL","code":"https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png"},{"id":"99e2d71a-d2cb-41d1-949e-6cf7eeaede99","title":"All GetStarted strings are present in Resources","content":"All GetStarted strings are present in Resources"},{"id":"906eba01-3ef7-44d9-8b44-c606b4fb9f55","title":"Acceptance Test Completed","content":"Acceptance test service has finished checking provided add-in."}],"addInDetails":{"adminInstallOnly":false,"capabilities":[{"code":"ReadWriteDocument","title":"Can read and make changes to your document"},{"code":"SendReceiveData","title":"Can send data over the Internet"}],"defaultLocale":"en-US","description":"SaaS Capital Excel Tools","displayName":"SaaS Cap Data","highResolutionIconUrl":"https://crcastle.github.io/saascap-data/assets/saascap-icon-64.png","hosts":["Workbook"],"iconUrl":"https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png","localizedDescriptions":{"en-US":"SaaS Capital Excel Tools"},"localizedDisplayNames":{"en-US":"SaaS Cap Data"},"localizedHighResolutionIconUrls":{"en-US":"https://crcastle.github.io/saascap-data/assets/saascap-icon-64.png"},"localizedIconUrls":{"en-US":"https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png"},"localizedRootSourceUrls":{"en-US":"https://crcastle.github.io/saascap-data/taskpane.html"},"productId":"d348c7c2-36c5-49cc-a8a2-ea185b8427ec","providerName":"SaaS Capital","requirements":"<Requirements xmlns=\"http://schemas.microsoft.com/office/appforoffice/1.1\"><Sets DefaultMinVersion=\"1.1\"><Set Name=\"SharedRuntime\" MinVersion=\"1.1\" /></Sets></Requirements>","rootSourceUrl":"https://crcastle.github.io/saascap-data/taskpane.html","subtype":"TaskPane","supportedProducts":[{"code":"Mac_Excel","title":"Excel 2019 or later on Mac","version":"16.38.0.0"},{"code":"Win32_Excel","title":"Excel on Windows (Microsoft 365)","version":"16.0.12527.20092"},{"code":"WAC_Excel","title":"Excel on the web","version":"16.0"},{"code":"Mac_Excel","title":"Excel on Mac (Microsoft 365)","version":"16.38.0.0"}],"supportedLanguages":["en-US"],"type":"ClientInstalled","version":"1.0.5.0","autorunLaunchEvents":[]}}⏎                                                       
~/Desktop/WinShared/Saas Cap Data main*
❯

And if I format that JSON response in a more human-readable way, I get this. Note the error at the top of the JSON matches the error I reported when I opened this issue. But again, I don't understand the error because the URL is accessible, returns a 200 response, and returns a 32x32 PNG image.

{
  "utcTimestamp": "2024-02-15T03:17:39.9340609+00:00",
  "status": "Rejected",
  "errors": [
    {
      "id": "1f9a991b-be34-49c5-939a-46b5170d7dbf",
      "title": "Icon URL Unreachable",
      "content": "Unable to retrieve an image from the icon URL.",
      "code": "The IconURL supplied in the app manifest is not reachable, IconURL : https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png."
    }
  ],
  "warnings": [],
  "notes": [
    {
      "id": "c5506d85-f984-41dd-ab09-78fd9f584de9",
      "title": "Package Type Identified",
      "content": "Package of your add-in was parsed successfully."
    },
    {
      "id": "0bf7e171-217e-40a1-98ad-1f0eaed9098b",
      "title": "Correct Package",
      "content": "Your package matches the submission type."
    },
    {
      "id": "8cf46fb0-8901-49c0-b3c2-15c3114425b4",
      "title": "Valid Manifest Schema",
      "content": "Your manifest does adhere to the current set of XML schema definitions for Add-in manifests."
    },
    {
      "id": "a95552d7-e476-4dd9-a58d-dcf4a246e7af",
      "title": "Manifest Version Correct Structure",
      "content": "The manifest version number has the correct structure for the platform that it supports."
    },
    {
      "id": "587a65ee-44a8-4412-9ccb-73201a8bf5a1",
      "title": "Manifest Version Correct Value",
      "content": "The manifest version number is greater or equal to 1.0."
    },
    {
      "id": "f7bca1c6-051e-405a-88bf-5df8d263f3f0",
      "title": "Manifest ID Valid Prefix",
      "content": "The product ID in the manifest has a valid prefix",
      "code": "d348c7c2-36c5-49cc-a8a2-ea185b8427ec"
    },
    {
      "id": "69e8d286-0a0b-44af-8a41-0193391478f0",
      "title": "Manifest ID Correct Structure",
      "content": "The structure of the product ID is correct.",
      "code": "d348c7c2-36c5-49cc-a8a2-ea185b8427ec"
    },
    {
      "id": "8968ae09-0f70-49b5-a839-5410639f65e5",
      "title": "Desktop Source Location Present",
      "content": "A desktop or default source location URL is found."
    },
    {
      "id": "19192530-7680-4f18-a68a-8bd07b656422",
      "title": "Secure Desktop Source Location",
      "content": "The manifest desktop source location URLs use HTTPS."
    },
    {
      "id": "cec06602-b4a7-40e4-aa50-a13a29a90584",
      "title": "The manifest source location URLs are valid.",
      "content": "The manifest source location URLs are valid."
    },
    {
      "id": "69150951-4963-4c4b-ae6b-58c07160e673",
      "title": "Supported Office Identified",
      "content": "Supported Office products were successfully determined."
    },
    {
      "id": "64f19c25-db3f-445a-8af8-a8dc02701d14",
      "title": "Support URL Present",
      "content": "The manifest support URL is present.",
      "code": "https://crcastle.github.io/saascap-data/assets/help/"
    },
    {
      "id": "abd58ba2-327b-48b7-ad18-c567f963d859",
      "title": "Valid and reachabe Support URL",
      "content": "The manifest support URL is valid and reachable.",
      "code": "https://crcastle.github.io/saascap-data/assets/help/"
    },
    {
      "id": "38e76e9c-314f-4759-b3fb-3afa252ce0c6",
      "title": "Valid OnlineMeetingCommandSurface ExtensionPoint.",
      "content": "OnlineMeetingCommandSurface ExtensionPoint extracted from manifest is found to be valid."
    },
    {
      "id": "987201dd-ea13-4dc3-9ead-190f6ea3fb36",
      "title": "Valid Manifest Resource Urls",
      "content": "The manifest Resource URLs are valid."
    },
    {
      "id": "145e9494-a40d-43aa-98fd-bbb76b430d2f",
      "title": "Valid Manifest AppDomain Urls",
      "content": "The manifest AppDomain URLs are valid."
    },
    {
      "id": "c658985f-8366-4495-9b82-0a534450c406",
      "title": "High Resolution Icon Present",
      "content": "A high resolution icon element was expected and is present.",
      "code": "https://crcastle.github.io/saascap-data/assets/saascap-icon-64.png"
    },
    {
      "id": "718c518d-b110-4d7e-b9a5-d8430e94c96b",
      "title": "Supported High Resolution Icon URL File Extension",
      "content": "The manifest high resolution icon URL has a valid image file extension.",
      "code": "png"
    },
    {
      "id": "79b5a5c9-cb79-40c2-b584-436ab550f030",
      "title": "Secure High Resolution Icon URL",
      "content": "The manifest high resolution icon URL uses HTTPS.",
      "code": "https://crcastle.github.io/saascap-data/assets/saascap-icon-64.png"
    },
    {
      "id": "1ecd4300-6e81-4fbb-9437-499a4c725df9",
      "title": "Correct High Resolution Icon Dimensions",
      "content": "The manifest high resolution icon dimensions are correct."
    },
    {
      "id": "1ba2f086-5f1b-401d-8ad6-482cb6526616",
      "title": "Icon Present",
      "content": "A icon element was expected and is present.",
      "code": "https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png"
    },
    {
      "id": "94330b32-277b-4292-9655-8acbc3ba6fd9",
      "title": "Supported Icon URL File Extension",
      "content": "The manifest icon URL has a valid image file extension.",
      "code": "png"
    },
    {
      "id": "07780e16-8979-4fb8-b1c2-da8cfce1ed0c",
      "title": "The manifest icon URL uses HTTPS.",
      "content": "Secure Icon URL",
      "code": "https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png"
    },
    {
      "id": "99e2d71a-d2cb-41d1-949e-6cf7eeaede99",
      "title": "All GetStarted strings are present in Resources",
      "content": "All GetStarted strings are present in Resources"
    },
    {
      "id": "906eba01-3ef7-44d9-8b44-c606b4fb9f55",
      "title": "Acceptance Test Completed",
      "content": "Acceptance test service has finished checking provided add-in."
    }
  ],
  "addInDetails": {
    "adminInstallOnly": false,
    "capabilities": [
      {
        "code": "ReadWriteDocument",
        "title": "Can read and make changes to your document"
      },
      {
        "code": "SendReceiveData",
        "title": "Can send data over the Internet"
      }
    ],
    "defaultLocale": "en-US",
    "description": "SaaS Capital Excel Tools",
    "displayName": "SaaS Cap Data",
    "highResolutionIconUrl": "https://crcastle.github.io/saascap-data/assets/saascap-icon-64.png",
    "hosts": [
      "Workbook"
    ],
    "iconUrl": "https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png",
    "localizedDescriptions": {
      "en-US": "SaaS Capital Excel Tools"
    },
    "localizedDisplayNames": {
      "en-US": "SaaS Cap Data"
    },
    "localizedHighResolutionIconUrls": {
      "en-US": "https://crcastle.github.io/saascap-data/assets/saascap-icon-64.png"
    },
    "localizedIconUrls": {
      "en-US": "https://crcastle.github.io/saascap-data/assets/saascap-icon-32.png"
    },
    "localizedRootSourceUrls": {
      "en-US": "https://crcastle.github.io/saascap-data/taskpane.html"
    },
    "productId": "d348c7c2-36c5-49cc-a8a2-ea185b8427ec",
    "providerName": "SaaS Capital",
    "requirements": "<Requirements xmlns=\"http://schemas.microsoft.com/office/appforoffice/1.1\"><Sets DefaultMinVersion=\"1.1\"><Set Name=\"SharedRuntime\" MinVersion=\"1.1\" /></Sets></Requirements>",
    "rootSourceUrl": "https://crcastle.github.io/saascap-data/taskpane.html",
    "subtype": "TaskPane",
    "supportedProducts": [
      {
        "code": "Mac_Excel",
        "title": "Excel 2019 or later on Mac",
        "version": "16.38.0.0"
      },
      {
        "code": "Win32_Excel",
        "title": "Excel on Windows (Microsoft 365)",
        "version": "16.0.12527.20092"
      },
      {
        "code": "WAC_Excel",
        "title": "Excel on the web",
        "version": "16.0"
      },
      {
        "code": "Mac_Excel",
        "title": "Excel on Mac (Microsoft 365)",
        "version": "16.38.0.0"
      }
    ],
    "supportedLanguages": [
      "en-US"
    ],
    "type": "ClientInstalled",
    "version": "1.0.5.0",
    "autorunLaunchEvents": []
  }
}             
crcastle commented 4 months ago

Hello? Anyone watching this repo's issues? I am blocked by this issue.

millerds commented 4 months ago

We do look at the issues . . . just not on a daily basis.

As pointed out, the tool just calls the web service that is supposed to be doing the same validation that is done when submitting to Partner Source. The information provided by the service call is what we report in the output.

Have you tried asking Partner Center support for clarification? https://learn.microsoft.com/en-us/partner-center/report-problems-with-partner-center

crcastle commented 4 months ago

Hi @millerds. Thanks and apologizes for my slightly snarky message. I have reported the issue following the directions at the link you provided.

millerds commented 4 months ago

@crcastle Did you hear back from Partner Center?

crcastle commented 4 months ago

Hey @millerds- Thanks for the follow-up. I did hear from them. It seems that the error message provided from the certification web service was a bit misleading. The URL was reachable, and the file extension was png, but the file was actually in WebP format. I converted it to png and the manifest certification was successful.

I replied to the thread with Partner Center suggesting they tweak the error message to say "the URL is unreachable or file is in the wrong format" instead of just "URL unreachable," which sent me on a bit of a wild goose chase. Alternatively separate out the unreachable error condition from the unreadable file error condition (including associated error messages).

Feel free to close this issue.

millerds commented 4 months ago

Glad you were able to get it resolved. Hopefully they take your feedback.