question

RalfiCorn-0429 avatar image
0 Votes"
RalfiCorn-0429 asked TheobaldDu-MSFT commented

WCF WPF Connection not allowed why?

C# Example

IService.cs

  namespace WcfService1
  {
      // 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]
          PersonsList GetPersons();
        
          [OperationContract]
          List<Person> GetPerson(string search);
        
          // TODO: Add your service operations here
      }
        
        
      // Use a data contract as illustrated in the sample below to add composite types to service operations.
      [DataContract]
      [XmlRootAttribute("Persons")]
      [Serializable]
      public class PersonsList
      {
          [DataMember]
          [XmlElement("Person")]
          public List<Person> personList { get; set; }
      }
      [DataContract]
      [Serializable]
      public class Person { 
          [DataMember]
          [XmlElement("Name")]
          public string name { get; set; }
        
        
          [DataMember]
          [XmlElement("Surname")]
          public string surname { get; set; }
        
          [DataMember]
          [XmlElement("City")]
          public string city { get; set; }
      }
  }


Service1.svc.cs

namespace WcfService1
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
// NOTE: In order to launch WCF Test Client for testing this service, please select Service1.svc or Service1.svc.cs at the Solution Explorer and start debugging.
public class Service1 : IService1
{
PersonsList persons = null;
public Service1()
{
using(TextReader reader = new StreamReader(AppDomain.CurrentDomain.BaseDirectory + "/persons.xml"))
{
XmlSerializer serializer = new XmlSerializer(typeof(PersonsList));
persons = (PersonsList)serializer.Deserialize(reader);
}
}
public List<Person> GetPerson(string search)
{
return (from p in persons.personList where p.city.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0 ||
p.name.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0 ||
p.surname.IndexOf(search, StringComparison.OrdinalIgnoreCase) >= 0
select p).ToList();
}

      public PersonsList GetPersons()
      {
          return persons;
      }
  }

}


MainWindow.xaml

<Window x:Class="WpfLINQ_BSP.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:WpfLINQ_BSP"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<DataGrid x:Name="grid" HorizontalAlignment="Left" Height="271" VerticalAlignment="Top" Width="532" Margin="53,94,0,0" ItemsSource="{Binding}" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="Name" Binding="{Binding Path=name}" />
<DataGridTextColumn Header="Surname" Binding="{Binding Path=surname}"/>
<DataGridTextColumn Header="City" Binding="{Binding Path=city}"/>
</DataGrid.Columns>
</DataGrid>
<TextBox x:Name="textBox1" HorizontalAlignment="Left" Height="30" Margin="120,59,0,0" TextWrapping="Wrap" VerticalAlignment="Top" Width="152" TextChanged="textBox1_TextChanged"/>
<Label Content="Search" HorizontalAlignment="Left" Margin="53,63,0,0" VerticalAlignment="Top"/>

  </Grid>

</Window>


MainWindow.xaml.cs

namespace WpfLINQ_BSP
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
ServiceReference1.IService1 service;
ObservableCollection<ServiceReference1.Person> p;
public MainWindow()
{
service = new ServiceReference1.Service1Client();
p = new ObservableCollection<ServiceReference1.Person>(service.GetPersons().personList);

          InitializeComponent();
                
          grid.DataContext = p;
      }
    
      private void textBox1_TextChanged(object sender, TextChangedEventArgs e)
      {
          p.Clear();
          service.GetPerson(textBox1.Text).ToList().ForEach(p.Add);
      }
  }

}


CLIENT

public class EmployeeClient {

  public static void main(String[] args) {
      EmployeeClient employeeClient = new EmployeeClient();
      Scanner scan = new Scanner(System.in);
      String input;
      int id;
      System.out.println("Was möchtest du tun (Employees,Emlpoyee,Logbookentry)?");
      while (!(input = scan.nextLine()).toLowerCase().equals("abbruch")){
          switch (input.toLowerCase()){
              case "employees":
                  for(Employee e : employeeClient.getAllEmployees().getEmployee()){
                      System.out.println(e.toString());
                  }
                  System.out.println("Was möchtest du tun (Employees,Emlpoyee,Logbookentry)?");
                  break;
              case "employee":
                  System.out.print("ID: ");
                  id = scan.nextInt();
                  scan.nextLine();
                  System.out.println(employeeClient.getEmployee(id));
                  System.out.println("Was möchtest du tun (Employees,Emlpoyee,Logbookentry)?");
                  break;
              case "logbookentry":
                  System.out.print("ID: ");
                  id = scan.nextInt();
                  scan.nextLine();
                  System.out.print("Filter: ");
                  String timefilter= scan.nextLine();
                  employeeClient.getAllLogbookentriesFiltered(id, timefilter).getLogbookEntry().forEach(logbookEntry -> {
                      System.out.println(logbookEntry);
                  });
              case "abbruch":
                  System.out.println("Was möchtest du tun (Employees,Emlpoyee,Logbookentry)?");
                  break;
              default:
                  System.out.println("Dieser Befehl existiert nicht!");
          }
      };
  }
  public static Employees getAllEmployees(){
      ClientResource cr = new ClientResource("http://localhost:8888/api/employee");
      EmployeesResource empsr = cr.wrap(EmployeesResource.class);
      return empsr.readAll();
  }
  public static Employee getEmployee(Integer id){
      ClientResource cr = new ClientResource("http://localhost:8888/api/employee/"+id);
      EmployeeResource empr = cr.wrap(EmployeeResource.class);
      return empr.read();
  }
  public static Employee getAllLogbookentries(Integer id){
      ClientResource cr = new ClientResource("http://localhost:8888/api/employee/"+id+"/logbookentry");
      LogBookEntryResource ler = cr.wrap(LogBookEntryResource.class);
      return ler.readAll();
  }
  public static Employee getAllLogbookentriesFiltered(Integer id, String cal){
      ClientResource cr = new ClientResource("http://localhost:8888/api/employee/"+id+"/logbookentry/"+cal);
      LogBookEntryResource ler = cr.wrap(LogBookEntryResource.class);
      return ler.readAll();
  }
  public static void editEmployee(Employee employee){
      ClientResource cr = new ClientResource("http://localhost:8888/api/employee/"+employee.getId());
      EmployeeResource empr = cr.wrap(EmployeeResource.class);
      empr.update(employee);
  }
  public static void addLogbookentry(Integer id, LogbookEntry logbookEntry){
      ClientResource cr = new ClientResource("http://localhost:8888/api/employee/"+id+"/logbookentry");
      LogBookEntryResource ler = cr.wrap(LogBookEntryResource.class);
      ler.create(logbookEntry);
  }
  public void addEmployee(Employee e){
      ClientResource clientResource = new ClientResource("http://localhost:6969/api/employees");
      EmployeesResource employeesResource = clientResource.wrap(EmployeesResource.class);
      employeesResource.add(e);
  }

}

@WebServlet(urlPatterns = "/listEmployeeServlet")
public class ListEmployeeServlet extends HttpServlet {

  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      Employees employees = EmployeeClient.getAllEmployees();
      req.setAttribute("emps", employees);
      RequestDispatcher requestDispatcher = req.getRequestDispatcher("listEmployees.jsp");
      requestDispatcher.forward(req, resp);
  }

}

@WebServlet(urlPatterns = "/editEmp")
public class EditEmployeeServlet extends HttpServlet {

  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      int id = Integer.parseInt(req.getParameter("empId"));
      Employee employee = EmployeeClient.getEmployee(id);
      Employee logBookEntries;
      if(req.getParameter("filter") == null || req.getParameter("filter").equals("")){
          logBookEntries = EmployeeClient.getAllLogbookentries(id);
      } else {
          logBookEntries = EmployeeClient.getAllLogbookentriesFiltered(id, req.getParameter("filter")+":00");
          req.setAttribute("filter", req.getAttribute("filter"));
      }
      req.setAttribute("logBookEntries", logBookEntries);
      req.setAttribute("emp", employee);
      RequestDispatcher requestDispatcher = req.getRequestDispatcher("editEmployee.jsp");
      requestDispatcher.forward(req, resp);
  }

}

@WebServlet(urlPatterns = "/updateEmployee")
public class UpdateEmployeeServlet extends HttpServlet {

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      int id = Integer.parseInt(req.getParameter("id"));
      String fname = req.getParameter("fname");
      String lname =  req.getParameter("lname");
      String birth = req.getParameter("birth");
      Employee e = EmployeeClient.getEmployee(id);
      e.setFirstname(fname);
      e.setLastname(lname);
      e.setDateOfBirth(birth);
      EmployeeClient.editEmployee(e);
      req.setAttribute("emps", EmployeeClient.getAllEmployees());
      RequestDispatcher requestDispatcher = req.getRequestDispatcher("listEmployees.jsp");
      requestDispatcher.forward(req,resp);
  }


}

@WebServlet(urlPatterns = "/addLogBookEntry")
public class AddLogBookEntryServlet extends HttpServlet {

  @Override
  protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      Employee employee = EmployeeClient.getEmployee(Integer.parseInt(req.getParameter("id2")));
      req.setAttribute("emp", employee);
      RequestDispatcher requestDispatcher = req.getRequestDispatcher("addLogBookEntry.jsp");
      requestDispatcher.forward(req, resp);
  }

}

@WebServlet(urlPatterns = "/saveLogBookEntry")
public class SaveLogBookEntryServlet extends HttpServlet {

  @Override
  protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
      int id=Integer.parseInt(req.getParameter("id"));
      XMLGregorianCalendar start=XMLGregorianCalendarImpl.parse(req.getParameter("starttime")+":00");
      XMLGregorianCalendar end=XMLGregorianCalendarImpl.parse(req.getParameter("endtime")+":00");
      String activity= req.getParameter("activity");
      LogbookEntry l=new LogbookEntry();
      l.setActivity(activity);
      l.setEndTime(end);
      l.setStartTime(start);
      EmployeeClient.addLogbookentry(id,l);
      Employee logBookEntries;
      if(req.getAttribute("filter") == null || req.getParameter("filter").equals("")){
          logBookEntries = EmployeeClient.getAllLogbookentries(id);
      } else {
          logBookEntries = EmployeeClient.getAllLogbookentriesFiltered(id, req.getParameter("filter"));
          req.setAttribute("filter", req.getAttribute("filter"));
      }
      req.setAttribute("logBookEntries", logBookEntries);
      Employee emp = EmployeeClient.getEmployee(id);
      req.setAttribute("emp",emp);
      RequestDispatcher requestDispatcher=req.getRequestDispatcher("editEmployee.jsp");
      requestDispatcher.forward(req,resp);
  }


}


INTERFACES

public interface EmployeeResource {

  @Get
  public Employee read();
  @Put
  public void update(Employee e);


}

public interface EmployeesResource {

  @Get("xml")
  public Employees readAll();
  @Post
  public void add(Employee e);

}

public interface LogBookEntryResource {

  @Get
  public Employee readAll();
  @Post("xml")
  public void create(LogbookEntry l);

}

MODEL

public class Model {

  private static final String XML_PATH = "data.xml";
  private static Model instance;
  private Employees employees;
  private Model(){
      JAXBContext jaxbContext = null;
      try {
          jaxbContext = JAXBContext.newInstance(Employees.class);
          Unmarshaller jaxbUnmarshaller = jaxbContext.createUnmarshaller();
          this.employees = (Employees) jaxbUnmarshaller.unmarshal(new File(XML_PATH));
      }catch (JAXBException e){
          e.printStackTrace();
      }
  }
  public static Model getInstance(){
      if(instance == null){
          instance = new Model();
      }
      return instance;
  }
  public Employees getEmployees(){
      return employees;
  }
  public void save(){
      JAXBContext jaxbContext = null;
      try {
          jaxbContext = JAXBContext.newInstance(Employees.class);
          Marshaller marshaller = jaxbContext.createMarshaller();
          marshaller.marshal(employees, new File(XML_PATH));
      } catch (JAXBException e) {
          e.printStackTrace();
      }
  }

}

SERVER

public class EmployeeServer {

  public static void main(String[] args) throws Exception {
      Component comp=new Component();
      comp.getServers().add(Protocol.HTTP,8888);
      comp.getDefaultHost().attach("/api",new EmployeeApp());
      comp.start();
  }


}

APP

public class EmployeeApp extends Application {

  @Override
  public Restlet createInboundRoot(){
      Router r = new Router();
      r.attach("/employee" , EmployeesServerResource.class);
      r.attach("/employee/{id}",EmployeeServerResource.class);
      r.attach("/employee/{id}/logbookentry/{filter}",LogBookEntryServerResource.class);
      r.attach("/employee/{id}/logbookentry",LogBookEntryServerResource.class);
      return r;
  }


}

public class EmployeeServerResource extends ServerResource implements EmployeeResource {

  @Override
  public Employee read() {
      for (Employee employee : Model.getInstance().getEmployees().getEmployee()) {
          if(employee.getId() == Integer.parseInt((String)getRequestAttributes().get("id"))){
              return employee;
          }
      }
      return null;
  }
  @Override
  public void update(Employee e) {
      List<Employee> emps = Model.getInstance().getEmployees().getEmployee();
      for(int i = 0;i<emps.size();i++){
          if(emps.get(i).getId().equals(e.getId())){
              emps.set(i,e);
              Model.getInstance().save();
              return;
          }
      }
  }

}

public class EmployeesServerResource extends ServerResource implements EmployeesResource {

  @Override
  public Employees readAll() {
      return Model.getInstance().getEmployees();
  }
  @Override
  public void add(Employee e) {
      Model.getInstance().getEmployees().getEmployee().add(e);
  }


}

public class LogBookEntryServerResource extends ServerResource implements LogBookEntryResource {

  @Override
  public Employee readAll() {
      Employee e = null;
      for (Employee employee : Model.getInstance().getEmployees().getEmployee()) {
          if(employee.getId().toString().equals(getRequestAttributes().get("id"))){
              e = employee;
              break;
          }
      }
      if(e!=null){
          Employee retVal = new Employee();
          if(this.getRequestAttributes().get("filter")==null || this.getRequestAttributes().get("filter").equals("")){
              retVal.getLogbookEntry().addAll(e.getLogbookEntry());
              return retVal;
          }
          List<LogbookEntry> filteredLog = new ArrayList<>();
          for (LogbookEntry entry : e.getLogbookEntry()) {
              if(entry.getEndTime().compare(XMLGregorianCalendarImpl.parse(this.getRequestAttributes().get("filter").toString()))==1){
                  filteredLog.add(entry);
              }
          }
          retVal.getLogbookEntry().addAll(filteredLog);
          return retVal;
      }
      return null;
  }
  @Override
  public void create(LogbookEntry logbookEntry) {
      for (Employee employee : Model.getInstance().getEmployees().getEmployee()) {
          if(employee.getId().equals(Integer.parseInt(getRequestAttributes().get("id").toString()))){
              employee.getLogbookEntry().add(logbookEntry);
              Model.getInstance().save();
              return;
          }
      }
  }

}

JSP

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">;
<title>Herzlich willkommen!</title>
</head>
<body>
<h1>Zeiterfassung</h1>
<form action="listEmployeeServlet" method="get">
<input type="submit" value="Mitarbeiterliste">
</form>
</body>
</html>

<%@ page import="zeiterfassung.model.Employee" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">;
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

 <title>Mitarbeiterliste</title>

</head>
<body>
<jsp:useBean id="emps" class="zeiterfassung.model.Employees" scope="request"></jsp:useBean>

 <div class="w3-container">
 <h1>Mitarbeiterliste</h1>

 <table>
     <thead>
         <tr>
             <th>Mitarbeiter-ID</th>
             <th>Vorname</th>
             <th>Nachname</th>
         </tr>
     </thead>
     <tbody>
         <% for(Employee emp : emps.getEmployee()){ %>
             <tr>
                 <td><%=emp.getId()%></td>
                 <td><%=emp.getFirstname()%></td>
                 <td><%=emp.getLastname()%></td>
                 <td>
                     <form action="editEmp" method="get">
                         <input type="hidden" name="empId" id="empId" value="<%=emp.getId()%>">
                         <input type="submit" value="Edit" class="btn-floating btn-large cyan">
                     </form>
                 </td>
             </tr>
         <% } %>
     </tbody>
 </table>
     <form action="addEmp" method="post">
         <input type="submit" value="Add Employee">
     </form>
 </div>

</body>
</html>


<%@ page import="zeiterfassung.model.LogbookEntry" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">;
<title>Employee</title>
</head>
<body>
<jsp:useBean id="emp" class="zeiterfassung.model.Employee" scope="request"></jsp:useBean>
<jsp:useBean id="logBookEntries" class="zeiterfassung.model.Employee" scope="request"></jsp:useBean>

 <h1>${emp.firstname} ${emp.lastname}</h1>

 <form action="updateEmployee" method="post">
     <label>Id: ${emp.id}</label><br>
     <label for="fname">Vorname:</label><br>
     <input type="text" id="fname" name="fname" value="${emp.firstname}"><br>
     <label for="lname">Nachname:</label><br>
     <input type="text" id="lname" name="lname" value="${emp.lastname}"><br>
     <label for="lname">Geburtsdatum:</label><br>
     <input type="date" id="birth" name="birth" value="${emp.dateOfBirth}"><br>
     <input type="hidden" id="id" name = "id" value="${emp.id}">
     <input class="waves-effect waves-light btn" type="submit" value="Speichern">
 </form>

 <h2>Zeiten:</h2>

 <form action="editEmp" method="get">
     <label>Filter: </label>
     <input type="time" id="filter" name="filter" value="<%=request.getParameter("filter")%>">
     <input type="hidden" id="empId" name = "empId" value="${emp.id}">
     <input class="waves-effect waves-light btn" type="submit" value="filtern">
 </form>

 <table>
     <thead>
     <tr>
         <th>Aktivität</th>
         <th>Start Zeit</th>
         <th>End Zeit</th>
     </tr>
     </thead>
     <tbody>
     <% for(LogbookEntry entry : logBookEntries.getLogbookEntry()){ %>
     <tr>
         <td><%=entry.getActivity()%></td>
         <td><%=entry.getStartTime()%></td>
         <td><%=entry.getEndTime()%></td>
     </tr>
     <% } %>
     </tbody>
 </table>

 <form action="addLogBookEntry" method="get">
     <input type="hidden" id="id2" name = "id2" value="${emp.id}">
     <input class="waves-effect waves-light btn" type="submit" value="neue Zeit verbuchen">
 </form>

 <form action="listEmployeeServlet" method="get">
     <input class="waves-effect waves-light btn" type="submit" value="Zurück">
 </form>
 </div>

</body>
</html>


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<link rel="stylesheet" href="css/w3.css">
<title>Zeit verbuchen</title>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css">;
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body>
<jsp:useBean id="emp" class="zeiterfassung.model.Employee" scope="request"></jsp:useBean>
<div class="w3-container">
<h1>${emp.firstname} ${emp.lastname}</h1>

 <form method="post" action="saveLogBookEntry">
     <input type="hidden" id="id" name="id" value="${emp.id}">
     <label for="activity">Aktivität:</label>
     <input type="text" id="activity" name="activity"><br>
     <label for="starttime">Startzeit:</label>
     <input type="time" id="starttime" name="starttime"><br>
     <label for="endtime">Endzeit:</label>
     <input type="time" id="endtime" name="endtime"><br>
     <input class="waves-effect waves-light btn" type="submit" value="Speichern">
 </form>

 <form action="editEmp" method="get">
     <input type="hidden" id="empId" name="empId" value="${emp.id}">
     <input class="waves-effect waves-light btn" type="submit" value="Zurück">
 </form>
 </div>

</body>
</html>

dotnet-csharpwindows-wcf
· 1
5 |1600 characters needed characters left characters exceeded

Up to 10 attachments (including images) can be used with a maximum of 3.0 MiB each and 30.0 MiB total.

Hi @RalfiCorn-0429 , What is the specific error message?

0 Votes 0 ·

0 Answers