从Azure辅助角色获取服务引用

时间:2013-09-10 03:44:20

标签: wcf iis azure azure-worker-roles service-reference

我希望我的WorkerRole应用程序能够进行交互。我已经编写了WCF接口/代理,我现在想要从客户端应用程序中使用它。我尝试在本地计算机上托管worker角色,跟踪端点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 /皂信封“&GT; Sendera:ActionNotSupported      

    

行动“http://schemas.xmlsoap.org/ws/2 004/09 / transfer / Get”的消息不能     由于ContractFilte r不匹配而在接收器处理     EndpointDispatcher。这可能是因为合同m ismatch     (发送方和接收方之间不匹配的操作)或绑定/安全性     m在发送方和接收方之间匹配。检查发件人和     接收者具有相同的合同和相同的约束力(包括     安全要求,例如消息,运输,     无)。

  

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

客户端:

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。

0 个答案:

没有答案