c# - 通过单选按钮更改网络服务调用以测试或生产

标签 c# asp.net .net web-services c#-4.0

我创建了一个调用网络服务的 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"; 
                        }

我看过这篇文章How can I dynamically switch web service addresses in .NET without a recompile? 但它需要我更改我的配置文件,我真的很想更改 service 变量以指向基于变量的另一个位置,并且基本上从 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; }

最佳答案

您的服务对象没有 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());

关于c# - 通过单选按钮更改网络服务调用以测试或生产,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18193319/

相关文章:

c# - 在 C# 中获取 Javascript Modified Dropdownlist 的选定值

c# - 强制 Entity Framework 使用 SQL 参数化以更好地重用 SQL proc 缓存

c# - 如何诊断 "The instruction at 0x......... referenced memory at 0x00000000"

c# - 使用 TimeSpan 作为定时器间隔

c# - 简单的 'Logout' ASP.NET 页面

C#:在对象中是否可以将十进制值转换为字符串或 double 值?

c# - 线程被中止 - 同时循环了很多行

c# - 用于筛选和循环遍历多个表的 ASP.NET LINQ 查询

javascript - 是否可以使用没有 View 状态和回发的 ASP.NET Web 表单

c# - WPF 双向绑定(bind)到静态类属性