.net フレームワークを使用して、Web アプリケーションからデータベースからデータを取得するために WCF を使用しています。私の WCF アプリケーション コードでは、データを XML 形式で取得する必要があります。私の Web アプリケーション コードでは、オブジェクトを使用して WCF サービスを呼び出し、データベースのデータを XML 形式で取得する必要があります。
WCF service.cs コードは次のとおりです。
public class AWS_WCF_Service : IAWS_WCF_Service
{
public SqlConnection Con = new SqlConnection();
public SqlConnectionStringBuilder Sbu = new SqlConnectionStringBuilder();
public static SqlConnection GlobalConnection_Web = new SqlConnection();
public SqlConnectionStringBuilder Sbu_Web = new SqlConnectionStringBuilder();
public static DataTable dt = new DataTable();
public static DataSet myDataSet = new DataSet();
public void DoWork()
{
}
public XmlDocument RetrieveData(String Tblname, String StationID, DateTime date)
{
bool flgPrcs = OpenDB();
if (flgPrcs == false)
{
return null;
}
String Query = "select * from " + Tblname + " where ID = ' 1 ' "
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = new SqlCommand(Query, Con);
adapter.Fill(dt);
myDataSet.Tables.Add(dt);
string xmlStr = "";
XmlDocument xmlDoc = new XmlDocument();
xmlStr = myDataSet.GetXml();
xmlDoc.LoadXml(xmlStr);
return xmlDoc;
}
public bool OpenDB()
{
if (Con.State.ToString().ToUpper() == "OPEN")
{
Con.Close();
}
Sbu.DataSource = @"XXXXXXX";
Sbu.InitialCatalog = "XXXXX";
Sbu.IntegratedSecurity = false;
Sbu.UserID = "XXXX";
Sbu.Password = "XXXXX";
Con.ConnectionString = Sbu.ConnectionString;
Con.Open();
return true;
}
public bool CloseDB()
{
if (Con.State.ToString().ToUpper() == "OPEN")
{
Con.Close();
}
return true;
}
}
WCF インターフェイス コードは次のとおりです。
[ServiceContract]
public interface IAWS_WCF_Service
{
[OperationContract]
void DoWork();
[OperationContract,XmlSerializerFormat]
System.Xml.XmlDocument RetrieveData(String Tblname, String StationID, DateTime date);
[OperationContract]
bool OpenDB();
[OperationContract]
bool CloseDB();
}
WCFを使用してデータをXMLに取得するWebアプリケーション、コードは次のとおりです
AWS_Service1.AWS_WCF_ServiceClient ObjAwsSer = new AWS_WCF_ServiceClient();
XmlDocument OBJXml = ObjAwsSer.RetrieveData("XXX", "XX", DateTime.Now);
ここで次のエラーが発生します
タイプ 'System.Xml.Linq.XElement' を 'System.Xml.XmlDocument' に暗黙的に変換することはできません