WCF-ASP.NET Connection Error
Hello, i have a problem with my WCF connection to my asp.net application.
I know that it is pretty much the same as a connection to a WPF app but somehow it wont start.
here my example code
WCF
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
[ServiceContract]
public interface IService1
{
[OperationContract]
IEnumerable<StudentItem> GetStudentFromClass(String className);
[OperationContract]
StudentItem GetStudentByMatNr(String matNr);
[OperationContract]
IEnumerable<StudentItem> GetStudentsByName(String name);
[OperationContract]
IEnumerable<StudentItem> GetAll();
// TODO: Add your service operations here
}
[DataContract]
public class StudentItem
{
[DataMember]
public String MatrikelNr { get; set; }
[DataMember]
public String Vorname { get; set; }
[DataMember]
public String Nachname { get; set; }
[DataMember]
public String Strasse { get; set; }
[DataMember]
public String Ort { get; set; }
[DataMember]
public String Telefonnr { get; set; }
[DataMember]
public String Email { get; set; }
[DataMember]
public String Klasse { get; set; }
[DataMember]
public DateTime? Geburtsdatum { get; set; }
[DataMember]
public int? Plz { get; set; }
public StudentItem(Student student)
{
this.MatrikelNr = student.MatrikelNr;
this.Vorname = student.Vorname;
this.Nachname = student.Nachname;
this.Strasse = student.Strasse;
this.Ort = student.Ort;
this.Telefonnr = student.TelefonNr;
this.Email = student.EMail;
this.Klasse = student.Klasse;
this.Geburtsdatum = student.Geburtsdatum;
this.Plz = student.PLZ;
}
public StudentItem()
{
}
}
WCF SVC
public class Service1 : IService1
{
StudentItemEntities studentItemEntities = new StudentItemEntities();
public IEnumerable<StudentItem> GetAll()
{
var query = from Student
in studentItemEntities.Student
select new StudentItem
{
MatrikelNr = Student.MatrikelNr,
Vorname = Student.Vorname,
Nachname = Student.Nachname,
Strasse = Student.Strasse,
Ort = Student.Ort,
Telefonnr = Student.TelefonNr,
Email = Student.EMail,
Klasse = Student.Klasse,
Geburtsdatum = Student.Geburtsdatum,
Plz = Student.PLZ
};
return query;
}
public StudentItem GetStudentByMatNr(string matNr)
{
var query = from Student
in studentItemEntities.Student
where Student.MatrikelNr.Equals(matNr)
select new StudentItem
{
MatrikelNr = Student.MatrikelNr,
Vorname = Student.Vorname,
Nachname = Student.Nachname,
Strasse = Student.Strasse,
Ort = Student.Ort,
Telefonnr = Student.TelefonNr,
Email = Student.EMail,
Klasse = Student.Klasse,
Geburtsdatum = Student.Geburtsdatum,
Plz = Student.PLZ
};
StudentItem studentItem = (StudentItem)query;
return studentItem;
}
public IEnumerable<StudentItem> GetStudentFromClass(string className)
{
var query = from Student
in studentItemEntities.Student
where Student.Klasse.Equals(className)
select new StudentItem
{
MatrikelNr = Student.MatrikelNr,
Vorname = Student.Vorname,
Nachname = Student.Nachname,
Strasse = Student.Strasse,
Ort = Student.Ort,
Telefonnr = Student.TelefonNr,
Email = Student.EMail,
Klasse = Student.Klasse,
Geburtsdatum = Student.Geburtsdatum,
Plz = Student.PLZ
};
return query;
}
public IEnumerable<StudentItem> GetStudentsByName(string name)
{
var query = from Student
in studentItemEntities.Student
where (Student.Vorname.Equals(name) || Student.Nachname.Equals(name))
select new StudentItem
{
MatrikelNr = Student.MatrikelNr,
Vorname = Student.Vorname,
Nachname = Student.Nachname,
Strasse = Student.Strasse,
Ort = Student.Ort,
Telefonnr = Student.TelefonNr,
Email = Student.EMail,
Klasse = Student.Klasse,
Geburtsdatum = Student.Geburtsdatum,
Plz = Student.PLZ
};
return query;
}
}
ASP.NET CS
public partial class WebForm1 : System.Web.UI.Page
{
private ServiceReference1.IService1 client = new ServiceReference1.Service1Client();
protected void Page_Load(object sender, EventArgs e)
{
GridView1.DataSource = client.GetAll();
GridView1.DataBind();
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication2.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:GridView ID="GridView1" runat="server"></asp:GridView>
</form>
</body>
</html>
WPF
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<DataGrid x:Name="grid" HorizontalAlignment="Left" Height="288" Margin="10,121,0,0" VerticalAlignment="Top" Width="772" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding MatrikelNr}" ClipboardContentBinding="{x:Null}" Header="MatrikelNr"/>
<DataGridTextColumn Binding="{Binding Vorname}" ClipboardContentBinding="{x:Null}" Header="Vorname"/>
<DataGridTextColumn Binding="{Binding Nachname}" ClipboardContentBinding="{x:Null}" Header="Nachname"/>
<DataGridTextColumn Binding="{Binding Strasse}" ClipboardContentBinding="{x:Null}" Header="Strasse"/>
<DataGridTextColumn Binding="{Binding Ort}" ClipboardContentBinding="{x:Null}" Header="Ort"/>
<DataGridTextColumn Binding="{Binding TelefonNr}" ClipboardContentBinding="{x:Null}" Header="Telefonnummer"/>
<DataGridTextColumn Binding="{Binding EMail}" ClipboardContentBinding="{x:Null}" Header="EMail"/>
<DataGridTextColumn Binding="{Binding Klasse}" ClipboardContentBinding="{x:Null}" Header="Klasse"/>
<DataGridTextColumn Binding="{Binding Geburtsdatum}" ClipboardContentBinding="{x:Null}" Header="Geburtsdatum"/>
<DataGridTextColumn Binding="{Binding Plz}" ClipboardContentBinding="{x:Null}" Header="Plz"/>
</DataGrid.Columns>
</DataGrid>
<TextBox x:Name="textbox" HorizontalAlignment="Left" Margin="104,62,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="120"/>
<Button x:Name="button" Content="Button" HorizontalAlignment="Left" Margin="327,61,0,0" VerticalAlignment="Top" Click="button_Click"/>
</Grid>
</Window>
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private ServiceReference1.IService1 client = new ServiceReference1.Service1Client();
public MainWindow()
{
InitializeComponent();
Update();
}
public void Update()
{
var text = this.textbox.Text;
var filter = new StudentItem
{
Klasse = text
};
var data = client.GetStudentFromClass(filter.Klasse);
this.grid.ItemsSource = data;
}
private void button_Click(object sender, RoutedEventArgs e)
{
Update();
}
}
XML VERSION
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Xml.Linq;
namespace XMLService
{
// HINWEIS: Mit dem Befehl "Umbenennen" im Menü "Umgestalten" können Sie den Schnittstellennamen "IService1" sowohl im Code als auch in der Konfigurationsdatei ändern.
[ServiceContract]
public interface IService1
{
[OperationContract]
string GetData(int value);
[OperationContract]
CompositeType GetDataUsingDataContract(CompositeType composite);
[OperationContract]
int GetAnzInteressenten(string id);
[OperationContract]
IEnumerable<InteressentDTO> GetAllInteressenten(string id);
[OperationContract]
void UpdateInteressenten();
}
// Verwenden Sie einen Datenvertrag, wie im folgenden Beispiel dargestellt, um Dienstvorgängen zusammengesetzte Typen hinzuzufügen.
[DataContract]
public class CompositeType
{
bool boolValue = true;
string stringValue = "Hello ";
[DataMember]
public bool BoolValue
{
get { return boolValue; }
set { boolValue = value; }
}
[DataMember]
public string StringValue
{
get { return stringValue; }
set { stringValue = value; }
}
}
[DataContract]
public class InteressentDTO
{
[DataMember]
internal string mail { get; set; }
[DataMember]
public string ID { get; set; }
[DataMember]
public string Vorname { get; set; }
[DataMember]
public string Nachname { get; set; }
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Xml.Linq;
namespace XMLService
{
// HINWEIS: Mit dem Befehl "Umbenennen" im Menü "Umgestalten" können Sie den Klassennamen "Service1" sowohl im Code als auch in der SVC- und der Konfigurationsdatei ändern.
// HINWEIS: Wählen Sie zum Starten des WCF-Testclients zum Testen dieses Diensts Service1.svc oder Service1.svc.cs im Projektmappen-Explorer aus, und starten Sie das Debuggen.
public class Service1 : IService1
{
XElement xelement = XElement.Load(@"BildungsmesseData.xml");
public IEnumerable<InteressentDTO> GetAllInteressenten(string id)
{
List<InteressentDTO> list = new List<InteressentDTO>();
XElement bildungsmesse = (from element in xelement.Elements("Bildungsmesse")
where element.Attribute("ID").Value.Equals(id)
select element).FirstOrDefault();
XElement ausstellungstage = (from element in bildungsmesse.Elements("Ausstellungstage")
select element).FirstOrDefault();
foreach (XElement ausstellungstag in ausstellungstage.Elements("Ausstellungstag"))
{
var query = from element in ausstellungstag.Elements("Interessent")
select new InteressentDTO
{
ID = element.Attribute("ID").Value,
Vorname = element.Attribute("Vorname").Value,
Nachname = element.Attribute("Nachname").Value,
mail = element.Attribute("mail").Value
};
list.AddRange(query);
}
return list;
}
public int GetAnzInteressenten(string id)
{
int anz = 0;
XElement bildungsmesse = (from element in xelement.Elements("Bildungsmesse")
where element.Attribute("ID").Value.Equals(id)
select element).FirstOrDefault();
XElement ausstellungstage = (from element in bildungsmesse.Elements("Ausstellungstage")
select element).FirstOrDefault();
foreach(XElement ausstellungstag in ausstellungstage.Elements("Ausstellungstag"))
{
anz += (from element in ausstellungstag.Elements("Interessent")
select element).Count();
}
return anz;
}
public string GetData(int value)
{
return string.Format("You entered: {0}", value);
}
public CompositeType GetDataUsingDataContract(CompositeType composite)
{
if (composite == null)
{
throw new ArgumentNullException("composite");
}
if (composite.BoolValue)
{
composite.StringValue += "Suffix";
}
return composite;
}
public void UpdateInteressenten()
{
var inter = new XElement("Interessent",
new XAttribute("ID", "100"),
new XAttribute("Vorname", "Fabian"),
new XAttribute("Nachname", "Knasmueller"),
new XAttribute("mail", "fabian@gmail.com"));
XElement bildungsmesse = (from element in xelement.Elements("Bildungsmesse")
where element.Attribute("ID").Value.Equals("1")
select element).FirstOrDefault();
XElement ausstellungstage = (from element in bildungsmesse.Elements("Ausstellungstage")
select element).FirstOrDefault();
XElement ausstellungstag = (from element in ausstellungstage.Elements("Ausstellungstag")
select element).FirstOrDefault();
ausstellungstag.Add(inter);
xelement.Save(@"BildungsmesseData.xml");
}
}
}
<?xml version="1.0" encoding="UTF-8"?>
-<Bildungsmessen>
-<Bildungsmesse ID="1">
<Ort>Wels</Ort>
<Datum>10.10.2018</Datum>
-<Ausstellungstage>
-<Ausstellungstag Nummer="1">
<Interessent ID="1" mail="levison@réalisations .com" Nachname="Irvine" Vorname="Levison"/>
<Interessent ID="2" mail="geraint@Mahato, Ganesh .at" Nachname="Boyd" Vorname="Geraint"/>
<Interessent ID="3" mail="tomi@Stuff .com" Nachname="Summers" Vorname="Tomi"/>
<Interessent ID="4" mail="ifanwade@Stuff .com" Nachname="Wade" Vorname="Ifan"/>
<Interessent ID="5" mail="orsodav@harsh.com .com" Nachname="Davison" Vorname="Orson"/>
<Interessent ID="6" mail="charleigh@Mahato, Ganesh .at" Nachname="Burrows" Vorname="Charleigh"/>
<Interessent ID="7" mail="esme@réalisations .com" Nachname="Squires" Vorname="Esme-Rose"/>
</Ausstellungstag>
</Ausstellungstage>
</Bildungsmesse>
-<Bildungsmesse ID="2">
<Ort>Perg</Ort>
<Datum>16.11.2018</Datum>
-<Ausstellungstage>
-<Ausstellungstag Nummer="1">
<Interessent ID="1" mail="usama@Stuff .com" Nachname="Bloggs" Vorname="Usama"/>
<Interessent ID="2" mail="adinacarrillo@réalisations .com" Nachname="Carrillo" Vorname="Adina"/>
<Interessent ID="3" mail="vickixiong@harsh.com .com" Nachname="Xiong" Vorname="Vicki"/>
<Interessent ID="4" mail="matildaroman@Stuff .com" Nachname="Roman" Vorname="Matilda"/>
</Ausstellungstag>
-<Ausstellungstag Nummer="2">
<Interessent ID="1" mail="eduardmartins@Stuff .com" Nachname="Martins" Vorname="Eduard"/>
<Interessent ID="2" mail="edan.mcgee@Stuff .com" Nachname="Mcgee" Vorname="Edan"/>
<Interessent ID="3" mail="wilkins@Stuff .com" Nachname="Wilkins" Vorname="Mathias"/>
<Interessent ID="4" mail="rc@harsh.com .com" Nachname="Combs" Vorname="Roan"/>
<Interessent ID="5" mail="sheilahatfield@Mahato, Ganesh .at" Nachname="Hatfield" Vorname="Sheila"/>
<Interessent ID="6" mail="isail@Stuff .com" Nachname="Fernandez" Vorname="Ismail"/>
<Interessent ID="7" mail="a.c@réalisations .com" Nachname="Callaghan" Vorname="Arianna"/>
<Interessent ID="8" mail="krstofer.sellers@Stuff .com" Nachname="Sellers" Vorname="Kristofer"/>
<Interessent ID="9" mail="tj@Mahato, Ganesh .com" Nachname="Kemp" Vorname="Tj"/>
</Ausstellungstag>
</Ausstellungstage>
</Bildungsmesse>
</Bildungsmessen>
SAMPLE INSERT
insert authors
values('409-56-7008', 'Bennet', 'Abraham', '415 658-9932',
'6223 Bateman St.', 'Berkeley', 'CA', '94705', 1)