我有一个解决方案,其中我有2个项目:
- ASP.NET MVC应用程序消费WCF服务。
- 5 WCF服务。
我在项目1中添加了一个Web服务参考。现在,我需要根据用户使用不同的服务。
User Type 1
:仅允许使用服务1。
User Type 2
:仅允许使用服务2。等。
我有服务URL 's 喜欢localhost:6227/Service1.svc
,localhost: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");