또한 동일한 오류가 발생했습니다. 개발 환경에서 자격 증명으로 WCF를 사용할 때 WCF가 제대로 작동했지만 다른 사람이 테스트에서 사용하면 동일한 오류가 발생했습니다. 나는 많은 연구를 한 다음 구성 업데이트를 수행하는 대신 결함 예외를 사용하여 WCF 방법에서 예외를 처리했습니다. 또한 WCF의 ID는 데이터베이스에서 액세스 할 수있는 동일한 자격 증명으로 설정해야합니다. 누군가 권한을 변경했을 수 있습니다. 동일한 코드 아래에서 찾으십시오.
[ServiceContract]
public interface IService1
{
[OperationContract]
[FaultContract(typeof(ServiceData))]
ForDataset GetCCDBdata();
[OperationContract]
[FaultContract(typeof(ServiceData))]
string GetCCDBdataasXMLstring();
//[OperationContract]
//string GetData(int value);
//[OperationContract]
//CompositeType GetDataUsingDataContract(CompositeType composite);
// TODO: Add your service operations here
}
[DataContract]
public class ServiceData
{
[DataMember]
public bool Result { get; set; }
[DataMember]
public string ErrorMessage { get; set; }
[DataMember]
public string ErrorDetails { get; set; }
}
service1.svc.cs에서 catch 블록에서 이것을 사용할 수 있습니다.
catch (Exception ex)
{
myServiceData.Result = false;
myServiceData.ErrorMessage = "unforeseen error occured. Please try later.";
myServiceData.ErrorDetails = ex.ToString();
throw new FaultException<ServiceData>(myServiceData, ex.ToString());
}
아래 코드와 같이 클라이언트 응용 프로그램에서 이것을 사용하십시오.
ConsoleApplicationWCFClient.CCDB_HIG_service.ForDataset ds = obj.GetCCDBdata();
string str = obj.GetCCDBdataasXMLstring();
}
catch (FaultException<ConsoleApplicationWCFClient.CCDB_HIG_service.ServiceData> Fex)
{
Console.WriteLine("ErrorMessage::" + Fex.Detail.ErrorMessage + Environment.NewLine);
Console.WriteLine("ErrorDetails::" + Environment.NewLine + Fex.Detail.ErrorDetails);
Console.ReadLine();
}
이것을 시도하면 정확한 문제를 얻는 데 도움이됩니다.