使用消息契约WCF将原始类型作为参数

时间:2017-10-02 12:06:52

标签: .net wcf soap

我正在制作WCF服务,并且存在将与服务通信的客户端,并且客户端期望响应处于给定格式。

这就是我使用MessageContract的原因。但是客户端将原始类型作为参数。

我是否无法使用MessageContract使我的服务接受原始类型作为参数?

这是我创建的合同的代码。

include 'detalii.php';

$con = mysqli_connect("192.168.1.11","test","","admin");

$check = "SELECT ID FROM `q7f6xr` where VIRTUALM = 'REGO-A' ORDER BY ID DESC LIMIT 1 ";
$check1 = "SELECT CHEIE FROM `rego-a` ORDER BY CHEIE DESC LIMIT 1";

$rs = mysqli_query($con, $check);
$rs1 = mysqli_query($con, $check1);

$data = mysqli_fetch_array($rs);
$data1 = mysqli_fetch_array($rs1);

if ($data != $data1) {
    // DACA IP-UL EXISTA EXECUTA AICI
    // IF IP EXISTS EXECUTE THIS
    echo "IP-ul exista deja !<br/>";
} else {
    $newUser = "INSERT INTO `rego-a` (`CHEIE`) VALUES ('$data[0]')";
    if (mysqli_query($con, $newUser)) {
        // DACA IP E UNIC EXECUTA AICI
        // IF IP IS UNIQUE EXECUTE THIS
        echo exec('C:\Users\Admin\Desktop\test1.txt');
        echo "You are now registered<br/>";
    }
}

这一切都有效,但是当我尝试在服务中添加参数(int Id,string foo)时,它会制动,因为当使用消息契约时,参数需要是对象。

有没有办法解决这个问题?

2 个答案:

答案 0 :(得分:0)

使用knowntype修饰内容列表。

 [KnownType(typeof(contentList))] 
 [MessageContract(IsWrapped = false)]
    public class contentListResult
    {
       [MessageBodyMember]
       public contentList contentList { get; set; }
    }

    public class contentList
    {
       //Some properties
    }

答案 1 :(得分:0)

好的我正在寻找一种能够在服务中获取参数的解决方法。

解决方法是声明一个对象并用[MessageContract]和[MessageHeader]的属性修饰它。