호스트 된 Solr 인덱스에서 프로세스를 시작하기 위해 http url을 실행해야하는 C# 콘솔 응용 프로그램을 만들고 있습니다. 내가 발사 오전 URL이이 같은 HttpWebRequest를 생성을위한 System.Net.WebRequest 클래스를 사용하고Wierd C# 콘솔 응용 프로그램에서 HTTPWebRequest를 만드는 동안 오류가 발생했습니다.
http://ServerName:8888/solr/people-dev/dataimport?command=full-import&clean=true
입니다 :
public string Execute(string url)
{
HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(url);
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
Stream strm = response.GetResponseStream();
string res = String.Empty;
using (StreamReader reader = new StreamReader(strm))
{
res = reader.ReadToEnd();
}
return res;
}
내가 같이 URL보다 전달하여이 함수를 호출 할 때마다
아니, 매개 변수, 내 컨트롤이 첫 번째 줄에 도달하자마자 요청을 만들고 1-2 초 동안 기다린 다음 실행중인 응용 프로그램 인스턴스를 종료하려고합니다.
. NET Framework 4.0과 함께 VS2010을 사용할 때 .NET Framework와 관련이 있는지 알 수 없습니다. 도움을 찾고 ..
질문에 덧붙여,이 함수는 상위 작업 내에서 생성 된 하위 작업 내에서 호출됩니다.
자식 작업이 완전히 실행되기 전에 부모 작업이 만료 될 수 있습니까? 그렇다면 어떻게되는지 확인하는 방법 ...
Task parentImportTask = new Task(() => {
TaskFactory tf = new TaskFactory(TaskCreationOptions.AttachedToParent,
TaskContinuationOptions.ExecuteSynchronously);
Task<bool> dataDumpTask = tf.StartNew<bool>(() =>
{
string sqlQuery = @"[dbo].[ImportKonnectPeopleDataForIndexing]";
using (SqlConnection connection = DBConnection.getSqlConnection("KonnectDataDumpDB"))
{
int importStatus = -1;
try
{
SqlCommand command = new SqlCommand(sqlQuery, connection);
command.CommandType = System.Data.CommandType.StoredProcedure;
command.CommandTimeout = 900;
importStatus = command.ExecuteNonQuery();
}
catch (Exception e)
{
Logger.log("Exception occured in data import task Solr/People::Index");
throw e;
}
finally
{ connection.Close(); }
if (importStatus > 0)
{ return true; }
return false;
}
}, TaskCreationOptions.AttachedToParent).ContinueWith((i) =>
{
if (!i.Result)
{ throw new Exception("Data Dump task not successfull Solr/People::Index"); }
return solrConnector.Execute(url);
}, TaskContinuationOptions.OnlyOnRanToCompletion);
}, TaskCreationOptions.LongRunning);
parentImportTask.RunSynchronously();
parentImportTask.Wait();
httpwebRequest를 시도하는 URL이 제대로 작동하는지 확인해주십시오. URL에 액세스 할 수없는 경우 HttlWebrequest.Create (url) 예외가 발생합니다. – jadavparesh06
예. 그것은 잘 작동합니다 .. 그건 그렇고, 코드는 심지어 예외를 throw하지 않습니다. –
나는 Execute() 루틴 주위에 try catch 블록을 사용해야한다고 제안한다. – jadavparesh06