Warum werden meine Benutzervariablen als Null übergeben? [Duplikat]C#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Warum werden meine Benutzervariablen als Null übergeben? [Duplikat]

Post by Anonymous »

Ich erstelle eine C# -Skript -Komponente im SSIS -Datenflow, um einen API -Anruf aufzunehmen. Ich habe anonly Variablen identifiziert und an das Skript übergeben, aber es fehlt mir etwas. Für Variablen scheint der Benutzer :: StationDetailid nicht das Problem zu sein. Ich denke, mit dem Benutzer :: Geoapifyurl -Variable ist etwas schief. /> An die Benutzervariable Benutzer :: Latlon übergeben. = Benutzer :: GeoAPifyUrl < /li>
< /ol>
Ich habe die Ausdrücke getestet und beim Verstellen der URL auf Chrom erhalte ich die Rückgabedaten. Der Fehler, den ich erhalte, ist "[scriptMain] Fehler: Objektreferenz nicht auf eine Instanz eines Objekts festgelegt." < /P>
'' '< /p>

Code: Select all

#region Help:  Introduction to the Script Component
#endregion

#region Namespaces
using System;
using System.Collections.Generic;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Json;
#endregion

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{
private readonly int filename; // user::StationDetailID, sourced from db pkey INT IDENTITY(1,1) to pass onto results to SQL db
private readonly string url; //user::GeoApifyURL, sourced from parameter+sql query to lat lon results+APIKeyParameter

public override void PreExecute()
{
base.PreExecute();
/*
* Add your code here
*/
//Get global variables from ReadOnlyVariables selected
string url = Variables.GeoApifyURL.ToString();
Int32 filename = Variables.StationDetailID;
// useragent not used for this project

}
public override void PostExecute()
{
base.PostExecute();
/*
* Add your code here
*/
}

public override void CreateNewOutputRows()
{
{
try
{
//set up the connections

System.Net.HttpWebRequest request = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url);
//no header required for this project
// set up response request
System.Net.HttpWebResponse response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.MemoryStream ms = new System.IO.MemoryStream();
response.GetResponseStream().CopyTo(ms);

//Load data into buffer
GeoResultsBuffer.AddRow();
GeoResultsBuffer.StationDetailID = filename;
GeoResultsBuffer.GeoAddress = Convert.ToBase64String(ms.ToArray());
//Load data into GeoAddress
//Rewind the ms object
//Streams have a starting point.   Need to go back to the beginning of the stream
ms.Position = 0;

//Deserialize (Parse) the json
//Need variable to put the deserialized json

GeoApifyResults gaar = new GeoApifyResults();

//Initialize the deserializer

DataContractJsonSerializer json = new DataContractJsonSerializer(gaar.GetType());
gaar = json.ReadObject(ms)  as GeoApifyResults;

//Only try to read the object if json is able to deserialize the text
if (gaar != null)
{

//Write variable to the output columns
GeoAddressBuffer.AddRow();
GeoAddressBuffer.StationDetailID = filename;
//GeoAddressBuffer.datasource = gaar.datasource;
GeoAddressBuffer.datasourcesourcename = gaar.datasource.sourceName;
GeoAddressBuffer.datasourceattribution = gaar.datasource.attribution;
GeoAddressBuffer.datasourcelicense = gaar.datasource.license;
GeoAddressBuffer.datasourceurl = gaar.datasource.url;
GeoAddressBuffer.formatted = gaar.results[0].formatted;
GeoAddressBuffer.country = gaar.results[0].country;
GeoAddressBuffer.countrycode = gaar.results[0].country_code;
GeoAddressBuffer.city = gaar.results[0].city;
GeoAddressBuffer.postcode = gaar.results[0].postcode;
GeoAddressBuffer.district = gaar.results[0].district;
GeoAddressBuffer.neighbourhood = gaar.results[0].neighbourhood;
GeoAddressBuffer.suburb = gaar.results[0].suburb;
GeoAddressBuffer.street = gaar.results[0].street;
GeoAddressBuffer.housenumber = gaar.results[0].housenumber;
GeoAddressBuffer.lat = (decimal)gaar.results[0].lat;
GeoAddressBuffer.lon = (decimal)gaar.results[0].lon;
GeoAddressBuffer.distance = (decimal)gaar.results[0].distance;
GeoAddressBuffer.resulttype = gaar.results[0].result_type;
GeoAddressBuffer.formatted = gaar.results[0].formatted;
GeoAddressBuffer.addressline1 = gaar.results[0].address_line1;
GeoAddressBuffer.addressline2 = gaar.results[0].address_line2;
GeoAddressBuffer.category = gaar.results[0].category;
//GeoAddressBuffer.timezone = gaar.results[0].timezone;
GeoAddressBuffer.timezonename = gaar.results[0].timezone.Name;
GeoAddressBuffer.timezoneoffsetstd = gaar.results[0].timezone.OffsetStd;
GeoAddressBuffer.timezoneoffsetstdseconds = gaar.results[0].timezone.OffsetStdSeconds;
GeoAddressBuffer.timezoneoffsetdst = gaar.results[0].timezone.OffsetStd;
GeoAddressBuffer.timezoneoffsetdstseconds = gaar.results[0].timezone.OffsetDstSeconds;
GeoAddressBuffer.timezoneabbreviationSTD = gaar.results[0].timezone.AbbreviationStd;
GeoAddressBuffer.timezoneabbreviationDST = gaar.results[0].timezone.AbbreviationDst;
GeoAddressBuffer.pluscode = gaar.results[0].plus_code;
//GeoAddressBuffer.pluscodeshort = gaar.results[0].plus_code.short;
//GeoAddressBuffer.rank = gaar.results[0].rank;
GeoAddressBuffer.rankimportance = (decimal)gaar.results[0].rank.importance;
GeoAddressBuffer.rankpopularity = (decimal)gaar.results[0].rank.popularity;
GeoAddressBuffer.placeid = gaar.results[0].place_id;
//GeoAddressBuffer.bbox = gaar.results[0].bbox;
GeoAddressBuffer.bboxlat1 = (decimal)gaar.results[0].bbox.lat1;
GeoAddressBuffer.bboxlat2 = (decimal)gaar.results[0].bbox.lat2;
GeoAddressBuffer.bboxlon1 = (decimal)gaar.results[0].bbox.lon1;
GeoAddressBuffer.bboxlon2 = (decimal)gaar.results[0].bbox.lon2;

//Get the Query Data
foreach (GeoApifyResults gq in gaar.properties.GeoQuery)
{
GeoQueryBuffer.AddRow();
GeoQueryBuffer.StationDetailID = filename;
GeoQueryBuffer.lat = gq.lat;
GeoQueryBuffer.lon = gq.lon;
GeoQueryBuffer.pluscode = gq.plus_code;
}
}
}
catch (Exception ex)
{
bool cancel = true;  //specifies whether the execution should be cancelled
ComponentMetaData.FireError(0, "ScriptMain", ex.Message, "", 0, out cancel);

}
}
}

}

// Define the GeoApifyResults class and related classes
[DataContract]
public class GeoApifyResults
{
internal readonly string plus_code;
internal decimal lat;
internal decimal lon;

[DataMember]
public Datasource datasource { get; set; }
[DataMember]
public List results { get; set; }
[DataMember]
public Properties properties { get; set; }
}

[DataContract]
public class Datasource
{
[DataMember]
public string sourceName { get; set; }
[DataMember]
public string attribution { get; set; }
[DataMember]
public string license { get; set; }
[DataMember]
public string url { get; set; }
}

[DataContract]
public class Result
{
[DataMember]
public string formatted { get; set; }
[DataMember]
public string country { get; set; }
[DataMember]
public string country_code { get; set; }
[DataMember]
public string city { get; set; }
[DataMember]
public string postcode { get; set; }
[DataMember]
public string district { get; set; }
[DataMember]
public string neighbourhood { get; set; }
[DataMember]
public string suburb { get; set; }
[DataMember]
public string street { get; set; }
[DataMember]
public string housenumber { get; set; }
[DataMember]
public double lat { get; set; }
[DataMember]
public double lon { get; set; }
[DataMember]
public double distance { get; set; }
[DataMember]
public string result_type { get; set; }
[DataMember]
public string address_line1 { get; set; }
[DataMember]
public string address_line2 { get; set; }
[DataMember]
public string category { get; set; }
[DataMember]
public Timezone timezone { get; set; }
[DataMember]
public string plus_code { get; set; }
[DataMember]
public Rank rank { get; set; }
[DataMember]
public string place_id { get; set; }
[DataMember]
public Bbox bbox { get; set; }
}

[DataContract]
public class Timezone
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string OffsetStd { get; set; }
[DataMember]
public int OffsetStdSeconds { get; set; }
[DataMember]
public string OffsetDst { get; set; }
[DataMember]
public int OffsetDstSeconds { get; set; }
[DataMember]
public string AbbreviationStd { get; set; }
[DataMember]
public string AbbreviationDst { get; set; }
}

[DataContract]
public class Rank
{
[DataMember]
public double importance { get; set; }
[DataMember]
public double popularity { get; set; }
}

[DataContract]
public class Bbox
{
[DataMember]
public double lat1 { get; set; }
[DataMember]
public double lat2 { get; set; }
[DataMember]
public double lon1 { get; set; }
[DataMember]
public double lon2 { get; set; }
}

[DataContract]
public class Properties
{
[DataMember]
public List GeoQuery { get; set; }
}
'''

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post