【问题标题】:Dynamically Change WCF Service URL in ASP.NET MVC在 ASP.NET MVC 中动态更改 WCF 服务 URL
【发布时间】:2017-11-05 04:56:48
【问题描述】:

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

  1. ASP.NET MVC 应用程序使用 wcf 服务。
  2. 5 个 WCF 服务。

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

<b>User Type 1</b>: 只允许消费Service 1。
<b>User Type 2</b>: 只允许消费Service 2。 等等

我有服务 URL,例如 localhost:6227/<b>Service1.svc</b>localhost:6227/<b>Service2.svc</b> 等。

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

编辑

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

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

【问题讨论】:

标签: c# asp.net asp.net-mvc web-services wcf


【解决方案1】:

如果我完全意识到您的问题,您需要动态肥皂服务呼叫。也许是这样的:

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

【讨论】:

    【解决方案2】:

    不确定我是否理解正确,但如果合适,您可以使用下面的 sn-p。

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

    【讨论】:

    • 以及如何使用这个 reqdURL 来提供来自该服务的仅限用户的数据?
    • 您要解决的问题是什么?动态更改 URL 或更改来自服务的数据(而不是 URL)?
    • 我需要更改 URL 以允许他只使用他的服务。
    • 您能否编辑您的问题并提供一个您正在寻找的示例?对我来说,您似乎正在寻找交换服务,上面的 sn-p 确实如此。
    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-22
      • 1970-01-01
      • 2011-07-23
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 2013-02-16
      相关资源
      最近更新 更多