We are on CMS 11 and Commerce 13. I just got the ServiceApi (5.6.1) and ServiceApi.Commerce (5.6.1) installed on our site and with some configuration enabled the site to start without errors. The site wouldn't start until I added the following line to my web.config.
However, after these steps, our internal system APIs are broken when they worked before. There is a WebApiConfig.cs file that is what sets up our internal APIs but I'm not sure what would fix this. When sending a query off that connects to our API and populates a datatable, these are the errors we get.
GET http://localhost:65238/api/library/list?sEcho=2&iColumns=4&sColumn…ow&bRegex=false&iSortCol_0=0&sSortDir_0=asc&iSortingCols=1&_=1719429175236 500 (Internal Server Error)
Uncaught Error: DataTables warning: table id=DT_MSDSList - Ajax error. For more information about this error, please see http://datatables.net/tn/7
at Ot (master.min.js:27:2081)
at Object.error (master.min.js:26:14625)
at u (master.min.js:3:7199)
at Object.fireWith [as rejectWith] (master.min.js:3:7948)
at n (master.min.js:4:11376)
at XMLHttpRequest.<anonymous> (master.min.js:4:16221)
Another error thrown during trying the QuickOrder, which is API on the site
quickorder.ts:52
GET http://localhost:65238/api/quickorder/getProductNameAutocomplete?term=d&size=5 500 (Internal Server Error)
WebApiConfig.cs file that is the only place I see anything API related in the entire solution. Opti support said something about there being no XMLMediaTypeFormatter, which was being removed in the WebApiConfig.cs for reasons I'm unaware of by a past partner. Commenting out that line was the last step to get the site to start without an exception.
using System;
using System.Net.Http.Formatting;
using System.Net.Http.Headers;
using System.Web.Http;
using EPiServer.Framework;
using EPiServer.Framework.Initialization;
using Newtonsoft.Json;
namespace CMS.Ellsworth.Business.Initialization
{
[InitializableModule]
[ModuleDependency(typeof(FrameworkInitialization))]
public class WebApiConfig : IInitializableModule
{
public static string ApiRoute = "api";
public void Initialize(InitializationEngine context)
{
// Enable Web API routing
GlobalConfiguration.Configure(config =>
{
config.MapHttpAttributeRoutes();
var formatters = GlobalConfiguration.Configuration.Formatters;
var jsonFormatter = formatters.JsonFormatter;
var settings = jsonFormatter.SerializerSettings;
var enumConverter = new Newtonsoft.Json.Converters.StringEnumConverter();
jsonFormatter.SerializerSettings.Converters.Add(enumConverter);
config.Formatters.Add(new BrowserJsonFormatter());
settings.Formatting = Formatting.Indented;
// Commented out due to it throws System.NullReferenceException: Object reference not set to an instance of an object.
// If its uncommented, it will throw an exception when the site is started.
// config.Formatters.Remove(config.Formatters.XmlFormatter);
config.Routes.MapHttpRoute(
name: "DefaultEpiApi",
routeTemplate: ApiRoute + "/{controller}/{id}",
defaults: new { id = RouteParameter.Optional });
});
}
public void Uninitialize(InitializationEngine context)
{
}
}
public class BrowserJsonFormatter : JsonMediaTypeFormatter
{
public BrowserJsonFormatter()
{
SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/html"));
SerializerSettings.Formatting = Formatting.Indented;
}
public override void SetDefaultContentHeaders(Type type, HttpContentHeaders headers, MediaTypeHeaderValue mediaType)
{
base.SetDefaultContentHeaders(type, headers, mediaType);
headers.ContentType = new MediaTypeHeaderValue("application/json");
}
}
}
Has anyone encountered this or know what to do to get my API's to work again?
Hi,
We are on CMS 11 and Commerce 13. I just got the ServiceApi (5.6.1) and ServiceApi.Commerce (5.6.1) installed on our site and with some configuration enabled the site to start without errors. The site wouldn't start until I added the following line to my web.config.
However, after these steps, our internal system APIs are broken when they worked before. There is a WebApiConfig.cs file that is what sets up our internal APIs but I'm not sure what would fix this. When sending a query off that connects to our API and populates a datatable, these are the errors we get.
Another error thrown during trying the QuickOrder, which is API on the site
WebApiConfig.cs file that is the only place I see anything API related in the entire solution. Opti support said something about there being no XMLMediaTypeFormatter, which was being removed in the WebApiConfig.cs for reasons I'm unaware of by a past partner. Commenting out that line was the last step to get the site to start without an exception.
Has anyone encountered this or know what to do to get my API's to work again?