重用 WebService 但使用自定义端点

发布于 2024-09-30 06:25:52 字数 614 浏览 5 评论 0原文

我正在使用具有端点 http://api.domain_a.com/Web 服务,并使用 Visual Studio 我可以轻松地生成一个代理类来轻松简单地使用该服务。

alt text

但我想创建一种用户可以使用自己的服务(并访问他们自己的数据,而不是我自己的数据)的方式),我想知道是否有一种方法可以动态更改服务的基本 URL。

作为示例

我通过将 Web 引用添加到我的项目来生成代理类,但现在,每个请求我有一个用户名,我将获得用户设置 (女巫包含他们的 URL),如何(如果有可能)告诉生成的代理我正在使用域 http://domain_b.com/ api 而不是我在添加 Web 引用时使用的原始 API?

我需要手动调用该服务吗?发送和接收 XML 数据?或者有一个“开关”可以用来指向新的 URL?

I'm using a Web Service that has a endpoint of http://api.domain_a.com/ and using Visual Studio I can easily generate a proxy class to work with the service easy and simple.

alt text

But I want to create a way that users can use their own service (and access their own data, instead my own) and I wanted to know if there is a way that I can change the base URL of the Service on-the-fly.

As an example

I generate the proxy classes by adding the Web References to my project, but now, per each request I have a User Name that I will get the User Settings (witch contains their URL), how can I (if it's a possibility) tell the generated proxy that I'm using domain http://domain_b.com/api instead of the original that I used when adding the Web References?

Do I need to call the service manually? Sending and Receiving XML data? or there is a "switch" that I can use to point to the new URL?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

┼── 2024-10-07 06:25:52

如果您使用 .NET 2.0,则每个代理类都应该有一个 URL 属性。只需更新 URL 属性,代理就会指向新服务。

如果您使用 WCF,那么事情会变得有点复杂,但也不会复杂太多。您只需更改端点地址:

var service = new ServiceClient();
string url = "http://domain_b.com/api";
EndpointAddress newAddress = new EndpointAddress(url);
service.Endpoint.Address = newAddress;

If you're using .NET 2.0, each of those proxy classes should have a URL property. Simply update the URL property and the proxy will point to the new service.

If you're using WCF then things get a little more complicated, but not by much. You just have to change the Endpoint Address:

var service = new ServiceClient();
string url = "http://domain_b.com/api";
EndpointAddress newAddress = new EndpointAddress(url);
service.Endpoint.Address = newAddress;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文