Saya juga mendapatkan kesalahan yang sama, WCF bekerja dengan baik untuk saya ketika saya menggunakannya di Lingkungan Dev dengan kredensial saya, tetapi ketika orang lain menggunakannya di TEST, itu melempar kesalahan yang sama. Saya melakukan banyak penelitian, dan bukannya melakukan pembaruan konfigurasi, menangani pengecualian dalam metode WCF dengan bantuan pengecualian kesalahan. Juga identitas untuk WCF perlu ditetapkan dengan kredensial yang sama yang memiliki akses dalam database, seseorang mungkin telah mengubah otoritas Anda. Silakan temukan di bawah kode yang sama:
[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; }
}
di service1.svc.cs Anda, Anda bisa menggunakan ini di catch 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());
}
Dan gunakan ini dalam aplikasi Klien seperti kode di bawah ini:
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();
}
Coba saja ini, pasti akan membantu untuk mendapatkan masalah yang tepat.