通过单选按钮将webservice调用更改为test或prod

本文关键字:test prod 调用 单选按钮 webservice | 更新日期: 2023-09-27 18:27:26

我创建了一个调用Web服务的vsto应用程序。一切似乎都很好,但我想扩展功能以调用生产服务的测试服务版本。调用我的测试服务的代码片段。

  //how do i change here to be dynamic?
 npfunctions.finfunctions service = new npfunctions.finfunctions();
            var Results = service.ValidateFoapal(index.ToArray(), fund.ToArray(), org.ToArray(), prog.ToArray(), acct.ToArray(), row.ToArray());
            /* if their are no error then return a "Y" for success.*/
            if (Results.Count() < 0) { return LocallErrorInd; }
            /*well we have encountered errors lets adjust the spreadsheet to notify the user.*/
            else{
                //REMOVE ANY VISUAL ERRORS
                Microsoft.Office.Interop.Excel.Range delRng = Globals.ThisAddIn.Application.Range["R:S"];
                delRng.Delete(XlDeleteShiftDirection.xlShiftToLeft);
                for (int i = 0; i < Results.Count(); i++)
                {//set the error indicator 
                     LocallErrorInd = "Y";
                    //account error:
                    if (Results[i].FVALJOR_FUND_WARNING == "Y") 
                       {
                           Microsoft.Office.Interop.Excel.Range WrkRng = Globals.ThisAddIn.Application.Range[Results[i].FVALJOR_ROW];
                           WrkRng.Offset[0, 17].Value2 = "Invalid Account"; 
                        }

我看过这篇文章。如何在不重新编译的情况下在.NET中动态切换web服务地址?但它需要我更改我的配置文件。我真的很想更改服务变量,使其指向基于变量的另一个位置,并基本上根据我的命令从prod切换到test。在我现在看来,我似乎必须复制代码,但我知道必须有更好的方法。我喜欢有点像。

if (TestBtn.Checked == true)
            {
                npfunctions.finfunctions service = new npfunctions.finfunctions();
               Results = service.ValidateFoapal(index.ToArray(), fund.ToArray(), org.ToArray(), prog.ToArray(), acct.ToArray(), row.ToArray());
            }
            if (PrdBtn.Checked == true)
            {
                  prdFunctions.finfunctions service = new prdFunctions.finfunctions();
                 Results = service.ValidateFoapal(index.ToArray(), fund.ToArray(), org.ToArray(), prog.ToArray(), acct.ToArray(), row.ToArray());
            }
            /* if their are no error then return a "Y" for success.*/
            if (Results.Count() < 0) { return LocallErrorInd; }

通过单选按钮将webservice调用更改为test或prod

您的服务对象没有URL属性吗?

第二个选项,你可以使用配置文件转换,这样你就不需要手动更改设置(当然是在初始设置之后)。

npfunctions.finfunctions service = new npfunctions.finfunctions();
if (TestBtn.Checked == true)
{
    service.url="<testurl>";
}
else
{
  service.url="<produrl>";
}
    Results = service.ValidateFoapal(index.ToArray(), fund.ToArray(), org.ToArray(), prog.ToArray(), acct.ToArray(), row.ToArray());

在我们的测试客户端中,我们有一个下拉列表,可以在dev或tst之间进行选择。我们还有选择proxy或net.tcp的按钮。(我们有很多不同的人使用不同的方法使用我们的服务)。

在app.config中,端点的名称与不同的可选选项相关联。例如name="BasicHttpBinding_IInterface_PROXY_DEV"

然后,您可以动态地建立您想要使用的端点,并使用它。