Created
September 23, 2019 23:15
-
-
Save andyhuey/d67f78f6568548f66aabd20eadff8acf to your computer and use it in GitHub Desktop.
Calling a Dynamics AX WCF service from .NET Core
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// old way: | |
public async Task RunAsync() | |
{ | |
CallContext context = new CallContext(); | |
context.Company = "axcompany"; | |
string pingResp = string.Empty; | |
var client = new XYZPurchInfoServiceClient(); | |
var rv = await client.wsPingAsync(context); | |
pingResp = rv.response; | |
Console.WriteLine("Ping response: {0}", pingResp); | |
} | |
/* app.config: | |
<system.serviceModel> | |
<bindings> | |
<netTcpBinding> | |
<binding name="NetTcpBinding_XYZPurchInfoService" /> | |
</netTcpBinding> | |
</bindings> | |
<client> | |
<endpoint address="net.tcp://myserver:8201/DynamicsAx/Services/XYZPurchInfoServices" | |
binding="netTcpBinding" bindingConfiguration="NetTcpBinding_XYZPurchInfoService" | |
contract="XYZPurchInfoSvcRef.XYZPurchInfoService" name="NetTcpBinding_XYZPurchInfoService"> | |
<identity> | |
<userPrincipalName value="myservice@corp.local" /> | |
</identity> | |
</endpoint> | |
</client> | |
</system.serviceModel> | |
*/ | |
// new way: | |
CallContext context = new CallContext(); | |
context.Company = "axcompany"; | |
string pingResp = string.Empty; | |
var client = new XYZPurchInfoServiceClient(GetBinding(), GetEndpointAddr()); | |
var rv = await client.wsPingAsync(context); | |
pingResp = rv.response; | |
Console.WriteLine("Ping response: {0}", pingResp); | |
private NetTcpBinding GetBinding() | |
{ | |
var netTcpBinding = new NetTcpBinding(); | |
netTcpBinding.Name = "NetTcpBinding_XYZPurchInfoService"; | |
netTcpBinding.MaxBufferSize = int.MaxValue; | |
netTcpBinding.MaxReceivedMessageSize = int.MaxValue; | |
return netTcpBinding; | |
} | |
private EndpointAddress GetEndpointAddr() | |
{ | |
string url = "net.tcp://myserver:8201/DynamicsAx/Services/XYZPurchInfoServices"; | |
string user = "myservice@corp.local"; | |
var uri = new Uri(url); | |
var epid = new UpnEndpointIdentity(user); | |
var addrHdrs = new AddressHeader[0]; | |
var endpointAddr = new EndpointAddress(uri, epid, addrHdrs); | |
return endpointAddr; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment