0

我希望我的 WorkerRole 应用程序能够进行交互。我已经编写了 WCF 接口/代理,现在我希望能够从客户端应用程序中使用它。我已经尝试在我的本地计算机上托管工作角色,跟踪端点 IP 地址,然后在我的客户端解决方案中,尝试添加对 IP 地址的服务引用,但是 VS2012 找不到它((有趣的是它没有使用相同的端口我指定,而不是它上面的下一个)。然后我尝试将我的工作角色发布到 Azure,然后从那里获取 IP 和连接。仍然找不到服务引用。我在我的机器和 azure 实例上都启动了 IIS。 ..但它仍然没有工作。

无论如何,我尝试使用 svcutil 并且我得到了

Metadata contains a reference that cannot be resolved: 'net.tcp://127.255.0. 2:9192/Test'.

<?xml version="1.0" encoding="utf-16"?><Fault xmlns="http://www.w3.org/2003/

05/肥皂信封">Sendera:ActionNotSupported

由于 EndpointDispatcher 的 ContractFilte r 不匹配,接收方无法处理带有 Action ' http://schemas.xmlsoap.org/ws/2 004/09/transfer/Get' 的消息。这可能是因为合约 m ismatch(发送方和接收方之间的操作不匹配)或发送方和接收方之间的绑定/安全性 m ismatch。检查发送方和接收方是否具有相同的合同和相同的绑定(包括安全要求,例如消息、传输、无)。

无论如何,我尝试使用 IP 地址手动连接主机的客户端。我的客户端在调用称为搜索的过程时与主机建立连接。当我从客户端拨打电话时,我可以在主机上断点。不幸的是,主机旨在返回一个字符串,但客户端只收到一个空值。到底是怎么回事?下面是我的代码:

客户:

private string serviceURL = "net.tcp://127.255.0.2:9192/Test";



private ITest GetAProxy()
{
    var binding = new NetTcpBinding(SecurityMode.None);
    var endpointAddress
        = new EndpointAddress(serviceURL);

    return new ChannelFactory<ITest>
        (binding, endpointAddress).CreateChannel();
}


[DataContract]
public class Send
{
    [DataMember]
    public String s { get; set; }

}

[DataContract]
public class Recieve
{
    [DataMember]
    public String x { get; set; }
}


[ServiceContract]
public interface ITest
{
    [OperationContract]
    Send Search(Recieve rec);
}

主持人:

[ServiceBehavior(AddressFilterMode = AddressFilterMode.Any)]
public class TestClass : ITest
{

    public Send Search(Recieve rec)
    {


        var s = new Send(); //I can breakpoint here
        s.s = "This will be received as a null";

        return s;
    }
}

[DataContract]
public class Send
{
    [DataMember]
    public String s { get; set; }

}

[DataContract]
public class Recieve
{
    [DataMember]
    public String x { get; set; }
}

[ServiceContract]
public interface ITest
{
    [OperationContract]
    Send Search(Recieve rec);
}

编辑:此外,如果我在调用 Search() 方法时在 Receive 中设置属性 x,则服务器会收到 null。

4

0 回答 0