asp.net 응용 프로그램 내부에서 SQL Server Reporting Services Webservice를 호출합니다. 주어진 보고서에 대한 모든 구독을 해고해야합니다. 그러나 나는 모든 일이 일어나기를 기다려야하는 사용자를 원하지 않기 때문에 모든 웹 서비스 호출을 별도의 스레드 안에두고 사용자에게 즉시 반환하고 싶습니다. 나는이 같은 형태의 코드를 사용하고다른 스레드 내에서 SSRS 웹 서비스 사용
:
public static void FireAllAsync(string ReportPath)
{
Hashtable paramValues = new Hashtable();
ThreadPool.QueueUserWorkItem(new WaitCallback(FireAll), ReportPath);
}
public static void FireAll(object ReportPath)
{
ReportingService rs = new ReportingService();
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
Subscription[] SubList = rs.ListSubscriptions((string)ReportPath, null);
foreach (Subscription CurSub in SubList) {
rs.FireEvent(CurSub.EventType, CurSub.SubscriptionID);
}
}
이 FireAll
잘 작동 호출을하지만, 스레드를 사용하는 FireAllAsync
를 호출하는 시도는 401 오류와 함께 실패합니다. 나는 자격증이 제대로 통과하지 못하는 문제를 믿습니다. 즉, 여기에 코드 줄 :
rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
나는 자격 증명이 작품을 캐시하는 방법을 잘 모르는, 그래서 그것이 별도의 스레드에있는 좋아하지 않는 이유를 알아낼 수 없습니다.
외부 함수에서 자격 증명을 가져 와서 인수로 전달하려고했지만 동일한 오류가 발생합니다.
어떤 아이디어가 있습니까?
사람 아 :
다양한 가능한 답변,이 문제를 해결을 도울 수있는 웹 참조가 있습니다. 그것은 대단한 답변이었습니다! 나는 당신에게 1 표 이상을 줄 수 있었으면 좋겠다. 감사! – Nathan
희망은 당신을위한 해결책으로 인도합니다! – TristanK