Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET MVC中动态更改WCF服务URL_C#_Asp.net_Asp.net Mvc_Web Services_Wcf - Fatal编程技术网

C# 在ASP.NET MVC中动态更改WCF服务URL

C# 在ASP.NET MVC中动态更改WCF服务URL,c#,asp.net,asp.net-mvc,web-services,wcf,C#,Asp.net,Asp.net Mvc,Web Services,Wcf,我有一个解决方案,其中我有两个项目: ASP.NET MVC应用程序使用wcf服务 5 WCF服务 我在项目1中添加了一个web服务引用。现在,我需要根据用户使用不同的服务,例如 用户类型1:仅允许使用服务1。 用户类型2:仅允许使用服务2。 等等 我的服务URL类似于localhost:6227/Service1.svc,localhost:6227/Service2.svc等 我已将所有服务URL存储在数据库中,我需要更改每个用户类型的URL,以便仅使用其允许的服务,而不添加更多端点,并且

我有一个解决方案,其中我有两个项目:

  • ASP.NET MVC应用程序使用wcf服务
  • 5 WCF服务
  • 我在项目1中添加了一个web服务引用。现在,我需要根据用户使用不同的服务,例如

    用户类型1
    :仅允许使用服务1。
    用户类型2
    :仅允许使用服务2。 等等

    我的服务URL类似于
    localhost:6227/Service1.svc
    localhost:6227/Service2.svc

    我已将所有服务URL存储在数据库中,我需要更改每个用户类型的URL,以便仅使用其允许的服务,而不添加更多端点,并且仅根据用户类型从后端更改URL。我需要相关的链接或代码来解决这个问题

    编辑

    网络配置中 我只在mvc应用程序中添加了这个端点,我不想在这里使用web配置来更改地址,但我想在应用程序运行时更改每个用户类型的代码中的地址。


    不确定我是否正确理解您的意思,但如果合适的话,您可以使用下面的代码片段

    //assuming you get string URL. Change type as per need.
    string reqdURL = GetServiceURL(typeof(userObject));
    
    private string GetServiceURL(Type userType)
    {
        if (userType == typeof(UserType1))
        {
            // currently hardcoded but you can replace your own fetch logic
            return "localhost:6227/Service1.svc";
        }
        if (userType == typeof(UserType2))
        {
            return "localhost:6227/Service2.svc";
        }
        //and so on
    }
    

    如果我完全了解您的问题,您需要动态soap服务调用。也许是这样的:

    private void CallService()
    {
        var myBinding = new BasicHttpBinding();
        myBinding.Security.Mode = BasicHttpSecurityMode.None;
        var myEndpointAddress = new EndpointAddress("your url depend on user type");
        var client = new ClientService1(myBinding, myEndpointAddress);
        var outpiut = client.someCall();
        client.close();
    }
    

    通过执行以下操作,可以直接修改端点地址:

    ClientService1 ws = new ClientService1();
    ws.Endpoint.Address = new EndpointAddress("Your new URL svc service");
    

    如何使用此reqdURL从该服务提供用户专用数据?您试图解决的问题是什么?动态更改URL或更改来自服务的数据(而不是URL)?我需要更改URL以允许他只使用他的服务。您能否编辑您的问题并提供一个您正寻找的示例?在我看来,您似乎正在寻找交换服务,上面的代码片段就是这样做的。这可能会有所帮助。。这没用。需要考虑的是:
    ClientService1 ws = new ClientService1();
    ws.Endpoint.Address = new EndpointAddress("Your new URL svc service");