在.net2.0主程序中使用.net 4.0环境生成的dll;.net2.0主程序调用.net4.0环境发布的webservice

.net2.0主程序app.config中增加

<startup>
      <requiredRuntime version="4.0" safemode="true"/>
</startup>

</configuration>

.net4.0环境生成的dll中相关配置不能写入.net2.0主程序的config文件,领导给的原因是不能影响主程序环境下的发布配置。dll库如何调用自己的配置文件?使用ini配置文件

 配置参数取值,配置文件优先于数据库配置

public static string baseUrl
        {
            get
            {
                 try
                {
                    return System.Configuration.ConfigurationManager.AppSettings["yesfpbaseUrl"].ToString();
                }
                catch
                {

                    string sql = "yesfp_intersys_qry";
                    DataTable dt = BusiOperator.DoTransOld(sql);
                    if (dt == null || dt.Rows.Count == 0)
                    {
                        return "";
                    }
                    else
                    {
                        return dt.Rows[0]["yesfpbaseUrl"].ToString();
                    }
                }
            }
        }
public static string baseUrl
        {
            get
            {
                string s = ContentValue("", "yesfpbaseUrl");
                if (s == "")
                {

                    string sql = "yesfp_intersys_qry";
                    DataTable dt = BusiOperator.DoTransOld(sql);
                    if (dt == null || dt.Rows.Count == 0)
                    {
                        return "";
                    }
                    else
                    {
                        return dt.Rows[0]["yesfpbaseUrl"].ToString();
                    }
                }
                else
                {
                    return s;
                }
            }
        }


其中ContentValue方法

 /// 读取INI文件
        /// </summary>
        /// <param name="section">节点名称</param>
        /// <param name="key"></param>
        /// <param name="def"></param>
        /// <param name="retval">stringbulider对象</param>
        /// <param name="size">字节大小</param>
        /// <param name="filePath">文件路径</param>
        /// <returns></returns>
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section,string key,string def,StringBuilder retval,int size,string filePath);

        /// <summary>
        /// 自定义读取INI文件中的内容方法
        /// </summary>
        /// <param name="Section"></param>
        /// <param name="key"></param>
        /// <returns></returns>
        private static string ContentValue(string Section, string key)
        {
            if (Section == "")
            {
                Section = strSec;
            }

            StringBuilder temp = new StringBuilder(1024);
            GetPrivateProfileString(Section, key, "", temp, 1024, strFilePath);
            return temp.ToString();
        }

net2.0主程序调用.net4.0环境发布的webservice

2.1 发布的程序支持post方法,在配置文件中增加以下

<system.web>
      <webServices>
        <protocols>
          <add name="HttpGet"/>
          <add name="HttpPost"/>
        </protocols>
      </webServices>
    </system.web>

2.2  通过SoapUI这个工具来获取的POST请求数据

public static string eInvoicePost(string url, string requestdatas, string reqparam)
        {
            Encoding encoding = Encoding.UTF8;
            string responseData = String.Empty;

            string jiex = "";

            WebRequest request = HttpWebRequest.Create(Local_ServUrl);
            string param = "<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">"
                          + "<soapenv:Header/>"
                          + "  <soapenv:Body>"
                          + "   <tem:HttpPost>"
                          +"      <!--Optional:-->"
                          + "      <tem:gsjp>" + gsjp + "</tem:gsjp>"
                          + "         <!--Optional:-->"
                          + "       <tem:url>" + url + "</tem:url>"
                          + "         <!--Optional:-->"
                          + "         <tem:requestdatas>" + requestdatas + "</tem:requestdatas>"
                          + "        <!--Optional:-->"
                          + "         <tem:param>" + reqparam + "</tem:param>"
                          + "      </tem:HttpPost>"
                          + "   </soapenv:Body>"
                          + "</soapenv:Envelope>";
            //MessageBox.Show(param);

            byte[] bs = Encoding.UTF8.GetBytes(param);

            request.Method = "POST";
            request.ContentType = "text/xml;charset=UTF-8";
            request.ContentLength = bs.Length;
            request.Headers["SOAPAction"] = "http://tempuri.org/HttpPost";

            using (Stream reqStream = request.GetRequestStream())
            {
                reqStream.Write(bs, 0, bs.Length);
                reqStream.Close();
            }

            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                using (StreamReader reader = new StreamReader(response.GetResponseStream(), encoding))
                {
                    responseData = reader.ReadToEnd().ToString();

                    XmlDocument xmldoc = new XmlDocument();//xml操作文档类
                    xmldoc.LoadXml(responseData);
                    jiex = xmldoc.DocumentElement.InnerText;
                }
            }

            //MessageBox.Show(responseData);

            responseData = jiex;

            return responseData;
        }

另,&符号进行转义  &amp;

param = param.Replace("&amp;", "&");

原文地址:https://www.cnblogs.com/songyulan/p/7250993.html