请各位大虾帮我分析一下一段代码是否存在问题?

问题描述

编写了一个接口提供平板调用,在本地测试是没有问题的,可以生成txt文件,但是更新到客户服务器却没有生成txt文件,但又没有报错。好怪,自己怀疑是使用了线程导致的?对线程不了解,第一次使用!WebServiceMethod.SyncComInfo这个方法用来获取Json,数据量较大执行比较久,然而使用了线程。///<summary>同步企业信息(包括相关的证书信息)///编码字段:Wat_ComInfo:Com_Des,Com_Brand;Wat_BreedWay:Bre_ProductType,Bre_OtherDes///</summary>///<paramname="AreaCode">行政区号</param>///<returns></returns>[WebMethod]publicstringSyncComInfo(stringAreaCode){SyncCompanyInfoyci=newSyncCompanyInfo();returnyci.SaveComInfoToTXT(AreaCode);}

usingSystem;usingSystem.Data;usingSystem.Configuration;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Security;usingSystem.Web.UI;usingSystem.Web.UI.HtmlControls;usingSystem.Web.UI.WebControls;usingSystem.Web.UI.WebControls.WebParts;usingSystem.Xml.Linq;usingSystem.IO;usingSystem.Collections.Generic;usingMMFrame;usingFrameWork;usingFrameWork.Components;usingFrameWork.Facade;usingSystem.Xml;usingSystem.Runtime.Serialization.Json;usingSystem.Web.Script.Serialization;usingSystem.Collections;usingSystem.Text;usingSystem.Diagnostics;usingSystem.Threading;///<summary>///SyncComInfo的摘要说明///</summary>publicclassSyncCompanyInfo{publicSyncCompanyInfo(){////TODO:在此处添加构造函数逻辑//}publicstringSaveComInfoToTXT(stringAreaCode){stringGUID=Common.GetGUID;stringDir=System.Web.HttpContext.Current.Server.MapPath(Common.UpLoadDir);stringtxtDir=Common.CreateDirectory(Dir,"SyncComInfo\"+GUID);System.Threading.Threadt=newSystem.Threading.Thread(()=>{WriteComInfoToTXT(AreaCode,txtDir);});t.IsBackground=true;t.Start();return"Public/SyncComInfo/"+GUID;}///<summary>企业信息写入TXT文件//////</summary>///<paramname="AreaCode"></param>///<returns></returns>publicvoidWriteComInfoToTXT(stringAreaCode,stringtxtDir){//try//{StreamWritersr=null;StreamWritersw=null;stringstrJson="";stringtxtPath="";if(!string.IsNullOrEmpty(AreaCode)){StringBuildersbSQL=newStringBuilder();sbSQL.AppendLine("selectValueIDfromSys_FieldValue");sbSQL.AppendLine("whereV_F_Key='ProvinceCityZoneKey'andV_ParValueID='922'");sbSQL.AppendLine("andV_Code='"+AreaCode+"'");intrecordCount=0;DataTabledt=newDataTable();dt=BusinessSystem.getDataList(sbSQL.ToString(),outrecordCount).Tables[0];if(recordCount>0){//市级stringvalueId=dt.Rows[0]["ValueID"].ToString();sbSQL=newStringBuilder();sbSQL.AppendLine("selectV_CodefromSys_FieldValue");sbSQL.AppendLine("whereV_F_Key='ProvinceCityZoneKey'andV_ParValueID='"+valueId+"'");recordCount=0;dt=newDataTable();dt=BusinessSystem.getDataList(sbSQL.ToString(),outrecordCount).Tables[0];for(inti=0;i<recordCount;i++){stringcode=dt.Rows[i]["V_Code"].ToString();txtPath=txtDir+"\"+code+".txt";strJson=WebServiceMethod.SyncComInfo(code);StreamWritersrA=File.CreateText(txtPath);srA.Close();//写入TXTStreamWriterswA=newStreamWriter(txtPath,false,System.Text.Encoding.Default);swA.WriteLine(strJson);swA.Close();}}else{//区县级txtPath=txtDir+"\"+AreaCode+".txt";strJson=WebServiceMethod.SyncComInfo(AreaCode);sr=File.CreateText(txtPath);sr.Close();//写入TXTsw=newStreamWriter(txtPath,false,System.Text.Encoding.Default);sw.WriteLine(strJson);sw.Close();}//创建一个txt文件,用于平板判断Json是否生成完成stringtxtIsFinish=txtDir+"\"+"IsFinish.txt";StreamWritersrF=File.CreateText(txtIsFinish);srF.Close();StreamWriterswF=newStreamWriter(txtIsFinish,false,System.Text.Encoding.Default);swF.WriteLine("HelloWorld.");swF.Close();}//}//catch(Exceptionex)//{//result="False|"+ex.Message;//FileTxtLogs.WriteLog("同步企业信息("+AreaCode+")出错!提示:"+ex.Message);//}}}

解决方案

解决方案二:
新创建的线程好像默认是IIS的权限。你看看IIS是不是有对应文件夹的修改权限
解决方案三:
恢复WriteComInfoToTXT的trycatch,新启线程发生异常,不会影响到主线程的。
解决方案四:
没生成文件应该是因为没有权限
解决方案五:
第一,个人认为你不必建多线程第二,建议你查查权限,是否该目录有足够的写入权限,如果别人的服务器不让你调,,可以试试写到自己的数据库来判断是否成功执行。
解决方案六:
1)有可能是你的目录配置错误了,生成的不知那个目录下去了2)先把多线程去掉,如果有错,你就可以在IE上看到了(否则就是你说的,不报错)

时间: 2024-09-08 16:57:55

请各位大虾帮我分析一下一段代码是否存在问题?的相关文章

请高人帮我分析一下这段代码,万分感谢!

问题描述 请高手帮我详细解释一下这段代码,万分感谢!尤其是红色部分.///<summary>///创建一个SqlCommand对象以此来执行存储过程///</summary>///<paramname="procName">存储过程的名称</param>///<paramname="prams">存储过程所需参数</param>///<returns>返回SqlCommand对象&l

代码-linq多表连接查询速度很慢,但我在数据库查询分析器中却是秒查,请各位大侠帮我分析下

问题描述 linq多表连接查询速度很慢,但我在数据库查询分析器中却是秒查,请各位大侠帮我分析下 with temp as ( select (case when SHIFTSCHEDULEID is null then (case when TICKET_SELL_TYPE=2 then (select COMPANY_ID from TBL_YD_SHIFT where SHIFTNUMBER= (select SHIFTNUMBER from TBL_SP_TICKET where tick

把一个网站的网址嵌入到我的网页框架中去后,点击菜单失去链接效果,不知何解,请各位大虾帮帮忙吧

问题描述 我也遇到同样一个问题,把一个网站的网址嵌入到我的网页框架中去后,点击菜单失去链接效果,不知何解,请各位大虾帮帮忙吧鼠标点击网页任务栏中出现:javascript:__doPostBack('LeftMenu1','Traffic')的快捷方式类似http://www.elong.com的网站也是就出现了一样的结果我要想用谁能给我想想法子 解决方案 解决方案二:问题已解决是因为隐藏框架导致的!解决方案三:该回复于2009-09-28 09:39:42被版主删除

线程-请大神帮我看下这部分代码怎么写?谢谢!很急

问题描述 请大神帮我看下这部分代码怎么写?谢谢!很急 如图所示,我把基本通讯功能已经实现,但是我想实现下图中红色圈中部分的功能,自动发送跟数据格式的功能怎么实现啊,希望发送端跟接收端都可以实现这个数据格式的功能,谢谢 整体代码如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System; using System.Data; usin

c语言数组定义-哪个大神能帮我解释下这段代码,在线等

问题描述 哪个大神能帮我解释下这段代码,在线等 这个是凯撒密码的代码,哪个大神帮我看哈我的这个里面每句的意思 解决方案 把英文字母变换一下,如D换为AA换为X,B换为Y 解决方案二: 就是获取到输入的字符串,然后对每一位进行判断,如果在区间[dz]或区间[DZ]减3,剩下的加23 解决方案三: 就是获取到输入的字符串,然后对每一位进行判断,如果在区间[dz]或区间[DZ]减3,剩下的加23 解决方案四: 就是获取到输入的字符串,然后对每一位进行判断,如果在区间[dz]或区间[DZ]减3,剩下的加

可以帮我解释一下这段代码吗?

问题描述 <%@controllanguage="C#"autoeventwireup="true"inherits="Controls_Footer,WebUI_deploy"%>谁可以帮我解释一下这段代码不,我是初学的,不大懂~希望能详细些!! 解决方案 解决方案二:inherits="Controls_Footer,WebUI_deploy"表示继承language="C#":表示网页的编

c语言-麻烦大家帮我看一下这段代码有啥错误?

问题描述 麻烦大家帮我看一下这段代码有啥错误? #include<stdio.h> int b[100],c[100],x; void input(int a[],int n) {printf("输入数组a<10个元素>:"); for(int i=0;i<n;i++) scanf("%c",&a[i]);} void insert(int a[],int n,int x) {for(int i=0;i<n;i++) if

图片-谁能帮我看下这段代码什么意思?他有说过是配置文件,不过我没懂

问题描述 谁能帮我看下这段代码什么意思?他有说过是配置文件,不过我没懂 解决方案 就是一般的配置文件呀,用来程序动态读取数据的,数据维护简单方便,可以用来存储一些不太重要的数据, 具体实现可以用java,c#等等,相关java类有,XmlDocument,XmlElement 解决方案二: 存数据的文件,类似数组.json:只不过规则不同,不是key value了

js-能帮我解释下这段代码吗?网上搜不到,关于NO CONFLICT

问题描述 能帮我解释下这段代码吗?网上搜不到,关于NO CONFLICT var old = $.fn.tab $.fn.tab = Plugin $.fn.tab.Constructor = Tab // TAB NO CONFLICT // =============== $.fn.tab.noConflict = function () { $.fn.tab = old return this } 这是bootstrap插件的一段代码.后面定义noConflict函数是干什么的.