2017-06-04 99 views
2

我有一個解決方案,我有2個項目:動態改變WCF服務的URL在ASP.NET MVC

  1. ASP.NET MVC應用程序使用WCF服務。
  2. 5 WCF服務。

我在項目1中添加了一個Web服務引用。現在,我需要根據用戶使用不同的服務,例如,

User Type 1:只允許消費服務1.
User Type 2:只允許消費服務2 等

我有服務URL localhost:6227/Service1.svclocalhost:6227/Service2.svc

我已經儲存了所有服務的URL在分貝,我需要改變URL爲每個用戶類型來消耗他允許的服務,而不只是從增加更多的終點,只有改變URL基於用戶類型的後端。我需要相關的鏈接或代碼來解決這個問題。

編輯

Web配置 我在MVC應用程序添加的只是此終結,我不希望使用的網絡配置在此處更改地址,但我想在更改地址在應用程序運行時爲每個用戶類型編碼。

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

這可能幫助.. https://stackoverflow.com/questions/5151077/wcf-change-endpoint-address-at-runtime – Abi

+0

它沒有幫助。 –

+0

需要考慮的事項:[WCF路由服務](https://msdn.microsoft.com/en-us/library/ee517423(v = vs.110).aspx) –

回答

2

如果我完全意識到你的問題,你需要動態的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(); 
} 
0

不知道如果我理解正確,但你可以使用下面的代碼片段,如果它適合。

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

以及如何使用此** reqdURL **僅從該服務提供用戶數據? –

+0

你想解決什麼問題?動態更改URL或更改服務(而不是URL)發出的數據? – touchofevil

+0

我需要**更改URL **以允許他只使用他的服務。 –