Appconnect doesn't seem to load

IIS and asp.net

All of a sudden my page won’t render correctly. Not sure when it started, but it might have been on the update to 7.4.0. I saw that there was an issue so I reverted back to 7.3.9. Maybe that’s issue? But I hadn’t changed anything on this page other than adding some meta description tags. So I don’t know if I should reinstall 7.4.0 or what? Any ideas this is kind of an emergency as I am having family health emergency and this client is down…. @patrick @george @teodor

The page is here: https://opticarmorwindows.com/Race-Windows/Chevrolet/Camaro-1967-to-1969/16

Here is the error log in the browser:

And here is the page code:

<!DOCTYPE html>
<html lang="en">

<head>
    <script src="dmxAppConnect/dmxAppConnect.js"></script>
    <!-- Google tag (gtag.js) -->

    <script async src="https://www.googletagmanager.com/gtag/js?id=G-ERMK32RBRM"></script>
    <script>
        window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-ERMK32RBRM');
    </script>
    <meta name="ac:route" content="/Race-Windows/:manufacturer/:model/:cat_id">
    <base href="/">

    <meta charset="UTF-8">
    <title>Race Window Application Details | Optic Armor Windows</title>

    <meta name="description" content="Explore application details for Optic Armor Race Windows. Find manufacturer, model specifics, SKU, price, tint options, window types, thickness, and shipping times. Shop DIBO and Oversized windows with expert info and fast ordering at Optic Armor Windows.">

    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
    <link rel="stylesheet" href="css/style.css" />
    <link rel="stylesheet" href="bootstrap/5/darkly/bootstrap.min.css" />
    <script src="dmxAppConnect/dmxBootstrap5Navigation/dmxBootstrap5Navigation.js" defer></script>
    <script src="https://kit.fontawesome.com/ebccee68c7.js" crossorigin="anonymous"></script>
    <script src="dmxAppConnect/dmxBrowser/dmxBrowser.js" defer></script>
    <script src="dmxAppConnect/dmxFormatter/dmxFormatter.js" defer></script>
    <link rel="stylesheet" href="dmxAppConnect/dmxBootstrap5TableGenerator/dmxBootstrap5TableGenerator.css" />
    <script src="dmxAppConnect/dmxDatastore/dmxDatastore.js" defer></script>
    <script src="dmxAppConnect/dmxBootstrap5Modal/dmxBootstrap5Modal.js" defer></script>
    <link rel="stylesheet" href="dmxAppConnect/dmxPreloader/dmxPreloader.css" />
    <script src="dmxAppConnect/dmxPreloader/dmxPreloader.js" defer></script>
    <link rel="stylesheet" href="dmxAppConnect/dmxAnimateCSS/animate.min.css" />
    <script src="dmxAppConnect/dmxAnimateCSS/dmxAnimateCSS.js" defer></script>
    <script src="dmxAppConnect/dmxDataTraversal/dmxDataTraversal.js" defer></script>
    <script src="dmxAppConnect/dmxBootstrap5Popovers/dmxBootstrap5Popovers.js" defer></script>
</head>

<body id="applicationdetails" is="dmx-app">
    <section id="ServerConnect">
        <dmx-serverconnect id="conn_ApplicationDetails" url="dmxConnect/api/Applications/applicationDetails_2.aspx" dmx-param:make="query.manufacturer" dmx-param:short_description="query.model" dmx-param:cat_id="query.cat_id"></dmx-serverconnect><dmx-data-view id="data_view1" dmx-bind:data="conn_ApplicationDetails.data.queryApplicationDetails" filter="thickness==formRaceWindowsChoice.inp_thickness.value&amp;&amp;window_location==formRaceWindowsChoice.inp_windowposition.value&amp;&amp;type==formRaceWindowsChoice.inp_type.value&amp;&amp;tint_darkness==formRaceWindowsChoice.inp_tint_darkness.value" sorton=""></dmx-data-view>

    </section>
    <section id="Components">
        <dmx-datastore id="cart"></dmx-datastore>
        <div is="dmx-browser" id="browser1"></div>
        <dmx-preloader id="preloader1" spinner="cubeGrid" bgcolor="#333333" size="300" color="#ce8716"></dmx-preloader>
    </section>
    <section id="Variables">
        <dmx-value id="varTintExample" dmx-bind:value="'&lt;img src=&quot;assets/images/Tint-Examples.jpg&quot;  width=&quot;200&quot;&gt;'"></dmx-value>
    </section>

    <!--#include file="includes/header.aspx" -->
    <main class="mt-2">
        <div class="container">
            <div class="row" id="Breadcrumbs">
                <div class="col">
                    <div class="breadcrumb">
                        <a class="breadcrumb-item breadcrumb-link" href="Home">Home</a>
                        <a class="breadcrumb-item breadcrumb-link" dmx-on:click="browser1.goto('Race-Windows')" style="cursor: pointer">Race Windows</a>
                        <a class="breadcrumb-item breadcrumb-link" dmx-on:click="browser1.goto('Race-Windows/'+query.manufacturer)" style="cursor: pointer">{{query.manufacturer.replace('-', ' ', false)}}</a>
                        <a class="breadcrumb-item breadcrumb-link" href="#">{{query.model.replace('-', ' ', false)}}</a>
                    </div>
                </div>
            </div>
            <div class="row">
                <div class="col-12 col-lg-6">
                    <span dmx-show="conn_ApplicationDetails.data.queryCatImage.has_cat_image!=true"><img dmx-bind:src="'/assets/images/makes/'+conn_ApplicationDetails.data.queryCatImage.make_image_id+'/'+conn_ApplicationDetails.data.queryCatImage.make_image_image" class="img-fluid" width="640"></span>
                    <span dmx-show="conn_ApplicationDetails.data.queryCatImage.has_cat_image==true"><img dmx-bind:src="'/assets/images/cats/'+conn_ApplicationDetails.data.queryCatImage.cat_id+'/'+conn_ApplicationDetails.data.queryCatImage.cat_image" width="640" class="img-fluid rounded"></span>
                </div>
                <div class="col-12 col-lg-6">
                    <div class="row">
                        <div class="col">
                            <div class="col text-center">
                                <h1 class="h3 text-start text-warning d-none d-md-block">{{query.manufacturer.replace('-', ' ', false)+' '+query.short_description+' '+query.model.replace('-', ' ', false)}} <span dmx-show="conn_ApplicationDetails.state.executing"><i class="fa-solid fa-spinner fa-spin-pulse"></i></span></h1>
                                <h1 class="h5 text-start text-warning d-md-none"><i class="fa-solid fa-rectangles-mixed" aria-hidden="true"></i> {{query.manufacturer.replace('-', ' ', false)+' '+query.short_description+' '+query.model.replace('-', ' ', false)}} <span dmx-show="conn_ApplicationDetails.state.executing"><i class="fa-solid fa-spinner fa-spin-pulse"></i></span></h1>
                            </div>
                        </div>
                    </div>
                    <div class="row">
                        <div class="col">
                            <form id="formRaceWindowsChoice" method="post">
                                <div class="row">
                                    <div class="col">
                                        <p>{{data_view1.data[0].long_description}}</p>
                                    </div>
                                </div>
                                <div class="form-group mb-3 row mb-lg-0">
                                    <label for="inp_quantity" class="col-sm-4 col-form-label col-6">SKU</label>
                                    <div class="col-sm-8 col-6">
                                        <p><span dmx-show="data_view1.data[0].SKU">{{data_view1.data[0].SKU}}</span><span dmx-hide="data_view1.data[0].SKU">N/A</span></p>
                                    </div>
                                </div>
                                <div class="form-group mb-3 row mb-lg-0">
                                    <label for="inp_quantity" class="col-sm-4 col-form-label col-6">Price</label>
                                    <div class="col-sm-8 col-6">
                                        <p>
                                            <span dmx-show="data_view1.data[0].type=='DIBO'">{{data_view1.data[0].price_dibo1.toNumber().formatCurrency('$', '.', ',', 0)}}</span>
                                            <span dmx-show="data_view1.data[0].type=='Oversized'">{{data_view1.data[0].price_oversized1.toNumber().formatCurrency('$', '.', ',', 0)}}</span>
                                            <span dmx-hide="data_view1.data[0].price_dibo1||data_view1.data[0].price_oversized1">N/A</span>
                                        </p>
                                    </div>
                                </div>
                                <div class="form-group mb-3 row">
                                    <label for="inp_windowposition" class="col-sm-4 col-form-label">Window Location</label>
                                    <div class="col-sm-8">
                                        <select id="inp_windowposition" class="form-select" dmx-bind:options="conn_ApplicationDetails.data.queryWinLocations" name="windowposition" optiontext="window_location" optionvalue="window_location">
                                        </select>
                                    </div>
                                </div>
                                <div class="form-group mb-3 row">
                                    <label for="inp_type" class="col-sm-4 col-form-label">Type</label>
                                    <div class="col-sm-8">
                                        <select id="inp_type" class="form-select" dmx-bind:options="conn_ApplicationDetails.data.queryAvailableType" optiontext="type == 'DIBO' ? 'Drop In Black Outs (DIBO)' : type" optionvalue="type" name="type">
                                        </select>
                                    </div>
                                </div>
                                <div class="form-group mb-3 row">
                                    <label for="inp_tint_darkness" class="col-sm-4 col-form-label">Tint&nbsp;&nbsp;<span dmx-bs-popover="{{varTintExample.value}}" data-bs-trigger="hover focus" dmx-bind:popover-title="'Tint Examples'" data-bs-html="true" class="text-warning"><i class="fas fa-info-square fa-xl"></i></span></label>
                                    <div class="col-sm-8">
                                        <select id="inp_tint_darkness" class="form-select" name="tint_darkness" dmx-bind:options="conn_ApplicationDetails.data.queryTintChoices" optiontext="tint_darkness" optionvalue="tint_darkness">

                                        </select>
                                    </div>
                                </div>
                                <div class="form-group mb-3 row">
                                    <label for="inp_thickness" class="col-sm-4 col-form-label">Thickness</label>
                                    <div class="col-sm-8">
                                        <select id="inp_thickness" class="form-select" dmx-bind:options="conn_ApplicationDetails.data.queryThickessAvails.sort(`thickness.baldEagleToMetric()`)" optiontext="thickness" optionvalue="thickness" name="thickness">
                                        </select>
                                    </div>
                                </div>
                                <div class="form-group mb-3 row">
                                    <label for="inp_quantity" class="col-sm-4 col-form-label">Quantity</label>
                                    <div class="col-sm-4" id="id_quantity" style="display: flex; align-items: center;">
                                        <button id="btn_decrease" class="btn btn-light" type="button" style="flex-shrink: 0;">
                                            <i class="fa-solid fa-minus"></i>
                                        </button>
                                        <input type="number" class="form-control" id="inp_quantity" name="quantity" value="1" min="1" style="margin: 0 5px; flex: 1;">
                                        <button id="btn_increase" class="btn btn-light" type="button" style="flex-shrink: 0;"><i class="fa-solid fa-plus"></i></button>
                                    </div>
                                </div>
                                <div class="form-group mb-3 row">
                                    <label for="input1" class="col-sm-4 col-form-label">Shipping Time Expectation</label>
                                    <div class="col-sm-8 align-self-center">
                                        <span dmx-show="data_view1.data[0].type.contains('Oversized')">
                                            <p>OVERSIZED PARTS: CURRENT LEAD TIME 3-4 WEEKS</p>
                                        </span>
                                        <span dmx-show="data_view1.data[0].type.contains('DIBO')">
                                            <p>DIBO: TYPICALLY IN STOCK, 3 DAYS TO SHIP. 3-4 WEEKS IF NOT IN STOCK ORDER ACKNOWLEDGEMENT WILL BE SENT INDICATING INVENTORY STATUS</p>
                                        </span>
                                        <span dmx-hide="data_view1.data[0].type.contains('Oversized') || data_view1.data[0].type.contains('DIBO')">
                                            <p>N/A</p>
                                        </span>

                                    </div>
                                </div>


                                <div class="form-group mb-3 row">
                                    <div class="col-sm-4">

                                    </div>
                                    <div class="col-sm-8">
                                        <span dmx-show="(data_view1.data[0].type == 'DIBO')"><button id="btnDIBO" class="btn btn-info text-nowrap" dmx-on:click="cart.upsert({},{prod_id: data_view1.data[0].app_id, prod_price: data_view1.data[0].price_dibo1, quantity: inp_quantity.value, prod_description: data_view1.data[0].short_description, prod_tint: inp_tint_darkness.selectedValue, prod_thickness: inp_thickness.selectedText, prod_name: data_view1.data[0].SKU, prod_window_location: data_view1.data[0].window_location, shipping: data_view1.data[0].shipping});modalAddToCart.show()"><i class="fa-solid fa-cart-plus" aria-hidden="true"></i>&nbsp;Buy Now</button></span>
                                        <span dmx-show="(data_view1.data[0].type == 'Oversized')"><button id="btnOversized" class="btn btn-info text-nowrap" dmx-on:click="cart.upsert({},{prod_id: data_view1.data[0].app_id, prod_price: data_view1.data[0].price_oversized1, quantity: inp_quantity.value, prod_description: data_view1.data[0].short_description, prod_tint: inp_tint_darkness.selectedValue, prod_thickness: inp_thickness.selectedText, prod_name: data_view1.data[0].SKU, prod_window_location: data_view1.data[0].window_location, shipping: data_view1.data[0].shipping});modalAddToCart.show()"><i class="fa-solid fa-cart-plus" aria-hidden="true"></i>&nbsp;Buy Now</button></span>
                                        <button class="btn btn-warning" dmx-show="conn_whoami.data.queryRoles[0].role=='A'" dmx-on:click="browser1.goto('admin/edit_race_window.aspx?app_id='+data_view1.data[0].app_id)">
                                            <i class="fa-solid fa-edit"></i> Edit
                                        </button>
                                    </div>
                                </div>
                            </form>
                        </div>
                    </div>
                </div>
            </div>

        </div>
    </main>
    <!--#include file="includes/footer.aspx" -->

    <script src="bootstrap/5/js/bootstrap.bundle.min.js"></script>
    <script>
        // Quantity buttons functionality
        document.getElementById('btn_decrease').addEventListener('click', function() {
            var input = document.getElementById('inp_quantity');
            input.value = Math.max(1, parseInt(input.value) - 1);
        });
        document.getElementById('btn_increase').addEventListener('click', function() {
            var input = document.getElementById('inp_quantity');
            input.value = parseInt(input.value) + 1;
        });
    </script>
    <script>
        // Sort Thickness
        dmx.Formatters('string', {
  baldEagleToMetric: function(str) {
    str = str.replace(/"/g, '').trim();
    let result = 0;
    if (str.includes('/')) {
      const parts = str.split(' ');
      if (parts.length > 1) {
        const wholeNumber = parseFloat(parts[0]);
        const fraction = parts[1].split('/');
        const numerator = parseFloat(fraction[0]);
        const denominator = parseFloat(fraction[1]);
        result = wholeNumber + (numerator / denominator);
      } else {
        const fraction = str.split('/');
        const numerator = parseFloat(fraction[0]);
        const denominator = parseFloat(fraction[1]);
        result = numerator / denominator;
      }
    } else {
      result = parseFloat(str);
    }
    return result;
  }
});
    </script>
</body>

</html>

Your page is using document relative links:

 <script src="dmxAppConnect/dmxAppConnect.js"></script>

so your server is trying to load the file from

https://opticarmorwindows.com/Race‐Windows/Chevrolet/Camaro-1967-to-1969/dmxAppConnect/dmxAppConnect.js

set your site links to root relative and save the page.

where do I do that? Are you talking about setting the app root to page versus body? I did that and that didn’t change anything. This page worked before no problem, I don’t quite get what’s going on?

In the site settings:

This should be set to site root. When you change it to site root, you need to re-save the page, so that the links can be updated.

Thanks @teodor that did the trick! I don’t understand how that could have changed? I wouldn’t have changed it and it worked previously….

Thanks Again