The application is sending several requests to different endpoints and all works well in .NET Framework but when ported to Core one of the services response has not all the data, only parts of it with and with no error.
I have tried some refractoring of the code and been looking if there is a async/sync problem but I dont really know where to look. I am hoping that for an experienced programmer the problem will show in the code that follows. If not, please let me know and Ill provide a complete project.
CONTRACT, first .NET Framework, second .NET Core
public class InskrivningDirekt
{
public IEnumerable<InskrivningMemberType> GetInskrivningData(string
objektid)
{
InskrivningPortTypeClient client = new InskrivningPortTypeClient();
client.ClientCredentials.UserName.UserName = "";
client.ClientCredentials.UserName.Password = "";
InskrivningRegisterenhetFilterType filter = new
InskrivningRegisterenhetFilterType();
filter.ItemsElementName = new ItemsChoiceType[] {
ItemsChoiceType.objektidentitet };
filter.Items = new string[] { objektid };
GetInskrivningRequestType request = new GetInskrivningRequestType()
{
IncludeData = new InskrivningDatasetType()
{
Items = new bool[] { true },
ItemsElementName = new ItemsChoiceType1[] { ItemsChoiceType1.total }
},
Items = new object[] { filter }
};
return client.GetInskrivning(request).InskrivningMember;
}
}
public class InskrivningDirekt
{
public IEnumerable<InskrivningMemberType> GetInskrivningData(string
objektid)
{
InskrivningPortTypeClient client = new InskrivningPortTypeClient();
client.ClientCredentials.UserName.UserName = Creds.UserName;
client.ClientCredentials.UserName.Password = Creds.Password;
using (OperationContextScope scope = new
OperationContextScope(client.InnerChannel))
{
HttpRequestMessageProperty httpRequestProperty = new HttpRequestMessageProperty();
httpRequestProperty.Headers[System.Net.HttpRequestHeader.Authorization] = "Basic " +
Convert.ToBase64String(Encoding.ASCII.GetBytes(client.ClientCredentials.UserName.UserName + ":" +
client.ClientCredentials.UserName.Password));
OperationContext.Current.OutgoingMessageProperties[HttpRequestMessageProperty.Name] = httpRequestProperty;
InskrivningRegisterenhetFilterType filter = new InskrivningRegisterenhetFilterType();
filter.ItemsElementName = new ItemsChoiceType[] { ItemsChoiceType.objektidentitet };
filter.Items = new string[] { objektid };
GetInskrivningRequestType request = new GetInskrivningRequestType()
{
IncludeData = new InskrivningDatasetType()
{
Items = new bool[] { true },
ItemsElementName = new ItemsChoiceType1[] { ItemsChoiceType1.total }
},
Items = new object[] { filter }
};
return client.GetInskrivning(request).InskrivningMember;
}
}
}
CONTROLLER, only the one with an issue
private PropertyInfo GetData(string objektid, string[] categories)
{
PropertyInfo data = new PropertyInfo();
List<Task> tasks = new List<Task>();
tasks.Add(Task.Factory.StartNew(() =>
{
data.Inskrivningsinformation = LMDirectDataModel.GetEnlistmentData(objektid);
}));
Task.Factory.ContinueWhenAll(tasks.ToArray(), results => { }).Wait();
return data;
}
Examples of the differences in generated reference
Generated with Visual Studio 2017 ASP.NET Framework ?
[System.Xml.Serialization.XmlArrayAttribute(Order = 9)]
[System.Xml.Serialization.XmlArrayItemAttribute("Lagfart", typeof(LagfartType))]
[System.Xml.Serialization.XmlArrayItemAttribute("Tomtrattsinnehav", typeof(TomtrattsinnehavType))]
[System.Xml.Serialization.XmlArrayItemAttribute("InskrivetAgande", IsNullable = false)]
public InskrivetAgandeType[] Agande
{
get
{
return this.agandeField;
}
set
{
this.agandeField = value;
this.RaisePropertyChanged("Agande");
}
}
Generated with Visual Studio 2019 Preview ASP.NET Core 3.0
[System.Xml.Serialization.XmlArrayAttribute(Order = 9)]
[System.Xml.Serialization.XmlArrayItemAttribute("InskrivetAgande", IsNullable = false)]
public InskrivetAgandeType[] Agande
{
get
{
return this.agandeField;
}
set
{
this.agandeField = value;
}
}