1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Chamar predicado Prolog em webservice c#

Discussão em 'Programação' iniciada por ThatsMe, 7 de Janeiro de 2013. (Respostas: 2; Visualizações: 1008)

  1. Viva.

    Como é visto no título, preciso de chamar um predicado de Prolog num webservice feito em C#... Após pesquisar no Google vi que existe o prolog.net, por exemplo, em que isso é possivel ser feito mas alguém tem alguma sugestão de uma forma de o fazer?

    Thanks in advance.
     
  2. ThatsMe já encontras-te uma solução? É que estou a tentar fazer a mesma coisa e estou com dificuldades :/

    Eu tenho um código para fazer isso mas para uma aplicação c# desktop. Mas quando tento usar nos webservices ele rebenta ao executar com o erro:
    WebDev.WebServer40.exe deixou de funcionar.

    Agradeço qualquer ajuda,
    Obrigado.
     
  3. Viva.

    Consegui fazer de uma forma que, sinceramente, mal sei explicar. Perdi duas semanas nisto mas lá consegui resolver.

    Deixo-te o código de um método que está a usar Prolog para tirares o exemplo:

    Código:
    using System;using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using System.Runtime.Serialization;
    using System.ServiceModel;
    using System.Text;
    using System.Web.Hosting;
    
    public class ServiceIA : IServiceIA
    {
        //Valida username e password
        public string PrologValidaUsername(string nome, string pw)
        {
            string response = "";
            string path = HostingEnvironment.ApplicationPhysicalPath;
            Environment.CurrentDirectory = path + @"IA_Code\";//pasta com ficheiros .pl
             try
                {
                    
                    Process myProcess = new Process();
                    myProcess.StartInfo.WorkingDirectory = path + @"IA_Code\";
    
    
                    myProcess.StartInfo.FileName = path + @"Prolog\PRO386W.EXE"; //executavel PROLOG
                    myProcess.StartInfo.Arguments = @"/V1 consult('executavel.pl'),login('" + nome +"','"+ pw + "')."; //chamada ao predicado
                    myProcess.Start();
                 
                    myProcess.WaitForExit();
                 
                    //Read the file as one string.
                    System.IO.StreamReader myFile = new System.IO.StreamReader(path + @"IA_Code\output.txt");
                    response = myFile.ReadToEnd();
              
                    myFile.Close();
                
                }
                catch(Exception ex)
                {
                    response = "Erro: ";
                    response += ex.Message;
                }
    
    
             return response;
        }
     

Partilhar esta Página