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,以便仅使用其允许的服务,而不添加更多端点,并且
用户类型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");