Aynı hatayı alıyordum, WCF, Dev Ortamında kimlik bilgilerimle kullanırken benim için düzgün çalışıyordu, ancak başka biri TEST'te kullanırken, aynı hatayı atıyordu. Çok fazla araştırma yaptım ve ardından yapılandırma güncellemeleri yapmak yerine, WCF yönteminde hata istisnası yardımıyla bir istisna ele aldım. Ayrıca WCF kimliğinin veritabanında erişimi olan aynı kimlik bilgileriyle ayarlanması gerekir, birisi otoritenizi değiştirmiş olabilir. Lütfen aynı kodu aşağıda bulabilirsiniz:
[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 dosyasında bunu catch bloğunda kullanabilirsiniz:
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());
}
Ve bunu aşağıdaki uygulama gibi İstemci uygulamasında kullanın:
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();
}
Sadece bunu deneyin, kesin sorunu almanıza yardımcı olacaktır.