Как использовать переменную SSIS вне метода main() в задаче сценария SSIS
Привет, я пытаюсь ссылаться на переменную, объявленную в методе Main() в задаче сценария SSIS, в другом методе.
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase { public void Main() { try { var user = Dts.Variables["User::usr"].Value.ToString(); var code = Dts.Variables["User::pwd"].Value.ToString(); } catch (Exception e) { // catch exception } } private class getItem { public string url = "http://localhost:1234/api/item"; using (var client = new System.Net.Http.HttpClient()) { // HTTP POST client.BaseAddress = new Uri("baseUrl"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var response = client.GetAsync("/item/GetAllItems").Result; string res = ""; using (HttpContent content = response.Content) { // Read string. Task<string> result = content.ReadAsStringAsync(); res = result.Result; } } private httpRequest cr(string uri, string webMethod = "GET", byte[] data = null, string contentType = "application/json", bool isAuth = false) { var reqid = httpRequest.Create(uri); if (isAuth) { var hruser = user; // trying to pass user from Main() method var hrcode = code; // trying to pass code from Main() method var authString = Convert.ToBase64String(Encoding.ASCII.GetBytes(String.Format("{0}:{1}", user, code))); reqid.Headers.Add("Authorization", "Basic " + authString); } return reqid; } } }
Что я уже пробовал:
Я попытался использовать конструктор, но все равно столкнулся с ошибкой "ссылка на объект не установлена на экземпляр объекта".
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase { string user; string code; public void Main() { try { user = Dts.Variables["User::usr"].Value.ToString(); code = Dts.Variables["User::pwd"].Value.ToString(); } catch (Exception e) { // catch exception } } private class getItem { public string url = "http://localhost:1234/api/item"; string User; string Code; public getItem(string user, string code) { User = user; Code = code; } using (var client = new System.Net.Http.HttpClient()) { // HTTP POST client.BaseAddress = new Uri("baseUrl"); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var response = client.GetAsync("/item/GetAllItems").Result; string res = ""; using (HttpContent content = response.Content) { // Read string. Task<string> result = content.ReadAsStringAsync(); res = result.Result; } } private httpRequest cr(string uri, string webMethod = "GET", byte[] data = null, string contentType = "application/json", bool isAuth = false) { var reqid = httpRequest.Create(uri); if (isAuth) { var hruser = User; // trying to pass user from Main() method var hrcode = Code; // trying to pass code from Main() method var authString = Convert.ToBase64String(Encoding.ASCII.GetBytes(String.Format("{0}:{1}", user, code))); reqid.Headers.Add("Authorization", "Basic " + authString); } return reqid; } } public string getItemDesc() { getItem gi = new getItem(user, code); //pass user, code? string uri = gi.BaseUrl; HttpStatusCode statuscode; string idesc = gi.httpRequest(uri, out statuscode, isSecured: true); if (statuscode != HttpStatusCode.OK) throw new ApplicationException("error"); return idesc; } }
Gerry Schmitz
Знаете ли вы разницу между частными и публичными полями / свойствами?