Digital Tool Factory blog - Backend web development in Atlanta GA

The Digital Tool Factory Blog

How to post objects directly to web api from C#

As I’ve looked this up three times now I should put the code directly on the blog. Happily Microsoft has done a lot of the plumbing work for you.

You have a Web API controller with an action that looks like this
[System.Web.Http.Route("Ajax/v1.1/PostItemBatch")]
[OutputCache(NoStore = true, Duration = 0)]
[System.Web.Http.HttpPostAttribute]
public bool PostItemBatch(List postItems)
{
using (ApplicationDbContext db = new ApplicationDbContext())
{
foreach (PostItem postItem in postItems)
{
db.PostItems.Add(postItem);
}
db.SaveChanges();
return true;
}
}

Then you can post data to it by the following

List PostItems = new List();
for (int i = 0; i < 11; i++)
{
PostItems.Add(new PostItem(true));
}

HttpClient client = new HttpClient();
HttpResponseMessage response = client.PostAsJsonAsync("http://localhost:56168/Ajax/v1.1/PostPostItemBatch", PostItems).Result;
var test = response.IsSuccessStatusCode;

And there you go!


15
Oct 18


Written By Steve French

 

How to fix problems with jquery data tables and a list of objects from ASP.net Web API

The main problem is that data tables does not expect a list of objects, instead it wants a differently formatted json object, something like

data: {“Property”: Value}

etc
Instead it’s getting a pure list, like this

[
{“Name”:”Value},
{“Name”:”Value},
{“Name”:”Value},
{“Name”:”Value},
{“Name”:”Value},
]

Solution – list out the values in the columns property of the data table, like this

$(document).ready(function () {
$(‘#example’).dataTable({
“deferRender”: true,
“processing”: true,
“iDisplayLength”: 25,
“ajax”: {
“url”: “https://domain.com/Ajax/v1.1/ListTypes”,
“dataSrc”: “”
},
“columns”: [
{ “data”: “Name” },
{ “data”: “OtherColumn” }
]
});
});

And you’re done!


10
Oct 18


Written By Steve French

 

How to fix problems with conflicting version of Newtonsoft.Json in your visual studio projects

The root problem seems to be in the version of Newtonsoft.json – if you set it to version 11.0.1 all of the problems magically disappear

 

 


24
Aug 18


Written By Steve French

 

How to fix the entity framework problem with System.Data.Entity.Migrations.Utilities.DomainDispatcher not found.

After much searching and repair, I could not find a good way – the error does seem to be documented on Github – so at least there’s that.

My solution to the problem, after trying several other ways, was to downgrade Visual Studio as described here – note – you really do have to run all of the cleanup tools.

UPDATE ON 09/21/2018 – this fixes the problem – thank you Stack Overflow User.

Copy and paste this

<dependentAssembly>
<assemblyIdentity name=”System.Management.Automation” publicKeyToken=”31bf3856ad364e35″ />
<bindingRedirect oldVersion=”0.0.0.0-3.0.0.0″ newVersion=”3.0.0.0″/>
<publisherPolicy apply=”no” />
</dependentAssembly>


24
Aug 18


Written By Steve French

 

A simple little linq values transformer

Somehow I’ve never actually used this keyword before, but as I gradually shift over to functional programming I came across the ForEach linq statement – for example

listOfObjects.ForEach(x => x.BodyText = x.BodyText.Replace(“,”,”, “));

And bam – all of the body text is replaced without having to loop through the enumerable.  Rather nice.  A simple little statement, but one that I’ve never really had the change to use before.


13
Aug 18


Written By Steve French

 

The simple way to force redirect to https in web config files

There are two things:
1. Just insert this code in the web.release.config

<system.webServer xdt:Transform=”Insert”>
<rewrite>
<rules>
<rule name=”Force HTTPS” enabled=”true”>
<match url=”(.*)” ignoreCase=”false” />
<conditions>
<add input=”{HTTPS}” pattern=”off” />
</conditions>
<action type=”Redirect” url=”https://{HTTP_HOST}/{R:1}” appendQueryString=”true” redirectType=”Permanent” />
</rule>
</rules>
</rewrite>
</system.webServer>

2. Then make sure that the Url Rewrite module is installed in IIS – if that module is not installed you will get perplexing, unhelpful error messages


24
Jul 18


Written By Steve French

 

How to fix the problem of undeletable characters in json strings in Visual Studio

So – you’re cruising around in web services, pulling data from various sources and your want to deserialize a string into an object, however, you can’t seem to remove extra quotations and escape characters. In fact everything you see looks like this

“{\”DataThingObject\”:{\”DataThingOneID\”:89,\”Status\”:\”Active\”,\”UserId\”:89,

and the \ and ” don’t go away, no matter how much text manipulation you do.

There actually isn’t a problem, you’re just looking at the string in the debugger, which adds the escape charachters for some reason – if you save it to a text or json file you will see that your json files are perfectly formatted.


06
Jul 18


Written By Steve French

 

How to fix the directory name is invalid IIS problem

Just restart the app pool and the problem goes away.


22
May 18


Written By Steve French

 

How to fix the problems with the package manager console in Visual Studio 2017

So – you’re getting the following problem

The following error occurred while loading the extended type data file: Microsoft.PowerShell.Core, C:\Windows\SysWOW64\WindowsPowerShell\v1.0\types.ps1xml(3763) : Error in type “System.Management.Automation.FormatViewDefinition”: Exception: The getter method should be public, non void, static, and have one parameter of type PSObject.

For some reason this just started happening after the last Visual Studio 2017 update

Update – 5/29/2018 – make sure to leave VS Code open while you open Visual Studio 2017 – the problem does recur after every restart for some reason.

First – locate devenv.exe.config in the C:\Users\WarHorse\AppData\Local\Microsoft\VisualStudio\15.0_YOURIDENTIFIER directory

Open that file in VS Code

paste the following in with the other dependent assemblies

<dependentAssembly>
<assemblyIdentity name=”System.Management.Automation” publicKeyToken=”31bf3856ad364e35″ />
<publisherPolicy apply=”no” />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name=”Microsoft.PowerShell.Commands.Utility” publicKeyToken=”31bf3856ad364e35″ />
<publisherPolicy apply=”no” />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name=”Microsoft.PowerShell.ConsoleHost” publicKeyToken=”31bf3856ad364e35″ />
<publisherPolicy apply=”no” />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name=”Microsoft.PowerShell.Commands.Management” publicKeyToken=”31bf3856ad364e35″ />
<publisherPolicy apply=”no” />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name=”Microsoft.PowerShell.Security” publicKeyToken=”31bf3856ad364e35″ />
<publisherPolicy apply=”no” />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name=”Microsoft.PowerShell.Commands.Diagnostics” publicKeyToken=”31bf3856ad364e35″ />
<publisherPolicy apply=”no” />
</dependentAssembly>


16
May 18


Written By Steve French

 

How to properly clone a project from Visual Studio.com

So – I recently had to clone a site off of Visual Studio.com lately – after some discovery, here are the proper steps

  1. Don’t try to do it from Visual Studio 2017 directly – instead just go to the project in VisualStudio.com, and click “Clone Is Visual Studio” – a dialogue window will pop up, and the combination f Visual Studio 2017 and Visual Studio.com will take care of everything for you
  2. Visual Studio will then be open to the FOLDER of the newly created project.  Note the folder location, then close Visual Studio, and open the solution (.sln) file in that folder (why Visual Studio doesn’t open it immediately I don’t know)
  3. From there, you have to copy over the nuget packages – in the nuget package manager, just enter “Update-Package -reinstall” and they will all be reinstalled or installed (that solution found here – the packages are not copied into source control)

and you’re done!


22
Jan 18


Written By Steve French

 




Copyright 2011 Digital Tool Factory. All Rights Reserved. Powered by raw technical talent. And in this case, WordPress.