【问题标题】:How to consume different proxyclass versions (production or test) of ASMX webservice如何使用 ASMX webservice 的不同 proxyclass 版本(生产或测试)
【发布时间】:2009-12-01 17:27:59
【问题描述】:

我在 Visual Studio 2005 中将 ASMX Web 服务作为一个单独的项目。为了按照a CODE Magazine tutorial 实现“程序集分离”,我的代理类位于一个单独的类库项目中,其中不包含我的代码 - 只是一个网络名为 ASMXproxy 的引用以及关联的 reference.csapp.config、.disco 和 .wsdl 文件。因此,编译后我有一个 FileServiceProxy.dll

为了使用这个 WS,我在同一个解决方案中有一个名为 FileServiceDemo 的 Web 应用程序项目。它没有 Web 参考,而是对 FileServiceProxy.dll 的“常规”参考。在我的 default.aspx.cs 文件中,我可以通过这些 sn-ps 访问我的 WS:

using FileServiceProxy.ASMXproxy;
public partial class _Default : System.Web.UI.Page
{
    ASMXproxy.FileService brokerService;
protected void Page_Load(object sender, EventArgs e)
{
    try
        {
            brokerService = new ASMXproxy.FileService();

因此,虽然事情以这种方式运行良好,但当我想测试已部署的版本或更改“本地主机”版本时,我觉得很尴尬。我不能简单地对 app.config 进行更改:

<applicationSettings>
    <FileServiceProxy.Properties.Settings>
        <setting name="FileServiceProxy_ASMXproxy_FileService" serializeAs="String">
            <value>http://localhost/TRIMBrokerService/FileService.asmx</value>
        </setting>
    </FileServiceProxy.Properties.Settings>
</applicationSettings>

简而言之,当我需要将我的 Web 应用程序发布到另一台服务器时,我必须更改代理类中的 Web 引用并重新构建它。然后,当我想在我的本地主机上调试它时,我必须将 Web 引用改回本地主机(如上)。

理想情况下,我想在我的 Web 应用演示项目中公开某种选择(例如,单选按钮或用于在运行时更改 URL 的文本框),以便我可以对所需的 FileServiceProxy 进行某种“后期绑定” .dll 在运行时使用。其他人已经草拟了"using config files" 的提案,但我被困在如何做到这一点上。在我看来,我必须有一个额外的项目,因此需要另一个 DLL——也许是 FileServiceProxyPROD.dll——但这似乎很尴尬,即使这样我也不确定我还需要做什么。

【问题讨论】:

    标签: asp.net visual-studio web-services asmx proxy-classes


    【解决方案1】:

    实际上,您可以使用相同的参考。只需更改代理实例的 Url 属性:

    using (var svc = new WebServiceProxy())
    {
        svc.Url = realUrl;
        var result = svc.ServiceMethod();
    }
    

    【讨论】:

    • 谢谢约翰。这很整洁;我现在明白你的意思了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-06
    • 1970-01-01
    • 2020-11-24
    • 1970-01-01
    相关资源
    最近更新 更多