将c#使用服务引用转换为vb.Net

时间:2017-09-11 11:44:50

标签: vb.net iis

我希望有人可以帮助我将此代码从c#转换为vb.net。我正在尝试使用IIS将VB应用程序中的订阅信息发布到c#app。我需要将VB用于应用程序的一部分,但需要将c#用于其他部分。我知道这不是理想的,但这是我所处的位置所以如果有人可以提供帮助,那就太棒了。我可以转换它的大部分,但坚持第一位,我几乎没有任何线索。甚至不确定MSDN是否已删除VB示例代码并仅显示c#代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.ServiceModel;
using System.Text;
using System.Threading.Tasks;

namespace SeagateServiceClient
{
public class Client : PubSubService.ISampleContractCallback
{
    private PubSubService.SampleContractClient client;
    public void Subscribe()
    {
        try
        {
            InstanceContext site = new InstanceContext(null, new Client());
            client = new PubSubService.SampleContractClient(site);

            //create a unique callback address so multiple clients can run on one machine
            WSDualHttpBinding binding = (WSDualHttpBinding)client.Endpoint.Binding;
            string clientcallbackaddress = binding.ClientBaseAddress.AbsoluteUri;
            //string clientcallbackaddress = "http://localhost:9000/myClient/";
            clientcallbackaddress += Guid.NewGuid().ToString();
            binding.ClientBaseAddress = new Uri(clientcallbackaddress);

            client.ClientCredentials.Windows.ClientCredential.UserName = @"temp";
            client.ClientCredentials.Windows.ClientCredential.Domain = "NN";
            client.ClientCredentials.Windows.ClientCredential.Password = "temp";

            //Subscribe.
            Console.WriteLine("Subscribing");
            client.Subscribe();
        }
        catch(Exception e)
        {
            Console.WriteLine(e.Message);
            Console.WriteLine(e.StackTrace);
        }
    }

    public void UnSubscribe()
    {
        if(client != null)
        {
            try
            {
                Console.WriteLine("Unsubscribing");
                client.Unsubscribe();
                client.Close();
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                Console.WriteLine(e.StackTrace);
            }
            finally
            {
                if (client != null && (client.State.ToString() != "Closed" && client.State.ToString() != "Faulted"))
                    client.Close();
            }
        }

    }

    public void PushPriceChange(string item, double price, double change)
    {
        try
        {
            Console.WriteLine("PriceChangePushed(item {0}, price {1}, change {2})", item, price.ToString("C"), change);
            client.PublishPriceChange("test", 22, 234);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
            Console.WriteLine(e.StackTrace);
        }
    }

    public void PriceChange(string item, double price, double change)
    {
        Console.WriteLine("PriceChange(item {0}, price {1}, change {2})", item, price.ToString("C"), change);
    }
}
}

VB.net尝试:

Imports System.Linq
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports System.ServiceModel

Public Module PublishData

Public Sub Test()
    System.Diagnostics.Debug.WriteLine("This is a test")
End Sub

Public client As PubSubService.SampleContractClient

Public Sub Subscribe()
    Try
        InstanceContext site = New InstanceContext(null, New Client())
        client = New PubSubService.SampleContractClient(site)

        'create a unique callback address so multiple clients can run on one machine
        WSDualHttpBinding binding = (WSDualHttpBinding)client.Endpoint.Binding
            String clientcallbackaddress = binding.ClientBaseAddress.AbsoluteUri
            'string clientcallbackaddress = "http://localhost:9000/myClient/"
        clientcallbackaddress += Guid.NewGuid().ToString()
        binding.ClientBaseAddress = New Uri(clientcallbackaddress

        client.ClientCredentials.Windows.ClientCredential.UserName = @"temp"
        client.ClientCredentials.Windows.ClientCredential.Domain = "NN"
        client.ClientCredentials.Windows.ClientCredential.Password = "temp"

        'Subscribe.
        Console.WriteLine("Subscribing")
        client.Subscribe()
    Catch ex As Exception
        Console.WriteLine(ex.Message)
        Console.WriteLine(ex.StackTrace)
    End Try
End Sub

Public Sub UnSubscribe()
    If (Not String.IsNullOrEmpty(client)) Then
        Try
            System.Diagnostics.Debug.WriteLine("Unsubscribing")
            client.Unsubscribe()
            client.Close()
        Catch ex As Exception
            System.Diagnostics.Debug.WriteLine(ex.Message)
            System.Diagnostics.Debug.WriteLine(ex.StackTrace)
        Finally
            If ((Not String.IsNullOrEmpty(client)) And (client.State.ToString() IsNot "Closed" And client.State.ToString() IsNot "Faulted")) Then
                client.Close()
            End If
        End Try
    End If
End Sub

Public Sub PushPriceChange(item As String, price As Double, change As Double)
    Try
        Console.WriteLine("PriceChangePushed(item {0}, price {1}, change {2})", item, price.ToString("C"), change)
        client.PublishPriceChange("test", 22, 234)
    Catch ex As Exception
        Console.WriteLine(ex.Message)
        Console.WriteLine(ex.StackTrace)
    End Try
End Sub


Public Sub PriceChange(item As String, price As Double, change As Double)
    Console.WriteLine("PriceChange(item {0}, price {1}, change {2})", item, price.ToString("C"), change);
End Sub

End Module

1 个答案:

答案 0 :(得分:0)

离开我的头顶(显然没有经过测试)

Imports System.Collections.Generic
Imports System.Linq
Imports System.ServiceModel
Imports System.Text
Imports System.Threading.Tasks

Namespace SeagateServiceClient
Public Class Client Implements PubSubService.ISampleContractCallback

Private client As PubSubService.SampleContractClient
Public Sub Subscribe()
Try
    Dim site As New InstanceContext(Nothing, New Client())
    client = New PubSubService.SampleContractClient(site)

    Dim binding As WSDualHttpBinding = DirectCast(client.Endpoint.Binding, WSDualHttpBinding)
    Dim clientcallbackaddress As String = binding.ClientBaseAddress.AbsoluteUri

    clientcallbackaddress += Guid.NewGuid().ToString()
    binding.ClientBaseAddress = New Uri(clientcallbackaddress)

    client.ClientCredentials.Windows.ClientCredential.UserName = "temp"
    client.ClientCredentials.Windows.ClientCredential.Domain = "NN"
    client.ClientCredentials.Windows.ClientCredential.Password = "temp"


    Console.WriteLine("Subscribing")
    client.Subscribe()
Catch e As Exception
        Console.WriteLine(e.Message)
        Console.WriteLine(e.StackTrace)
End Try
End Sub

Public Sub UnSubscribe()
    If client IsNot Nothing Then
    Try
        Console.WriteLine("Unsubscribing")
        client.Unsubscribe()
        client.Close()
    Catch e As Exception
        Console.WriteLine(e.Message)
        Console.WriteLine(e.StackTrace)
Finally
        If client IsNot Nothing AndAlso (client.State.ToString() <> "Closed" AndAlso client.State.ToString() <> "Faulted") Then
                client.Close()
        End If
    End Try
End If
End Sub

Public Sub PushPriceChange(item As String, price As Double, change As Double)
Try
        Console.WriteLine("PriceChangePushed(item {0}, price {1}, change {2})", item, price.ToString("C"), change)
        client.PublishPriceChange("test", 22, 234)
Catch e As Exception
        Console.WriteLine(e.Message)
        Console.WriteLine(e.StackTrace)
End Try
End Sub

Public Sub PriceChange(item As String, price As Double, change As Double)
            Console.WriteLine("PriceChange(item {0}, price {1}, change {2})", item, price.ToString("C"), change)
End Sub
End Class
End Namespace