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



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

  1. ASP.NET MVC应用程序消费WCF服务。
  2. 5 WCF服务。

我在项目1中添加了一个Web服务参考。现在,我需要根据用户使用不同的服务。

User Type 1:仅允许使用服务1。
User Type 2:仅允许使用服务2。等。

我有服务URL 's 喜欢localhost:6227/Service1.svclocalhost:6227/Service2.svc等。

我已将所有服务URL存储在 db 中,我需要更改每种用户类型的URL,以便仅在不添加更多端点的情况下消耗其允许的服务,并且仅根据用户从后端更改URL类型。我需要相关的链接或代码来解决此问题。

编辑

in Web配置我仅在MVC应用程序中添加了此端点,我不想使用Web配置在此处更改地址,但是我想在应用程序运行时为每个用户类型的代码中更改地址。

<client>
      <endpoint address="http://localhost:6227/Service1.svc"
        binding="customBinding" bindingConfiguration="CustomBinding_IService1"
        contract="Service1.IService1" name="CustomBinding_IService1" />
    </client>

如果我完全意识到您的问题,则需要动态肥皂服务调用。也许这样的东西:

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();
}

不确定我是否正确理解您,但是您可以使用下面的片段。

//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
}

您可以直接修改您的端点地址:

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

相关内容

  • 没有找到相关文章

最新更新