asp.net 中写了一段代码,在添加成功数据后,调用一个里面有webService的方法,在本地怎么运行都没问题,就是发布后就出问题了,这个怎么回事,求大神指教下面是小弟的代码,这个方法里面调用了一个webservice,各位大神麻烦给看一下了,网上有关说法是关于权限的设置,就是不知道怎么设置权限,要是大神们有答案的话,麻烦说的详细一下,先谢谢各位了
public void ReuploadWebService(HttpContext context) { int StuID = Convert.ToInt32(context.Session["stu_id"]); string F_USER_ID = context.Session["user_id"].ToString(); Telemedicine WS = new Telemedicine(); PubDataOper SaveLog = new PubDataOper(); SaveLog.SaveSysLog(int.Parse(context.Session["user_id"].ToString()), 4, StuID, "拒绝会诊(专家会诊列表)"); string RltValue = WS.ReuploadConsultation(StuID, int.Parse(context.Session["user_id"].ToString())); XmlDocument xml_doc = new XmlDocument(); try { xml_doc.LoadXml(RltValue); } catch { context.Response.Write("no"); } string RltStaID = ""; string RltStaMsg = ""; XmlNode node1 = (XmlElement)xml_doc.DocumentElement.SelectSingleNode("/smit_telemed_result/state_id"); try { RltStaID = node1.InnerText; } catch { context.Response.Write("no"); // context.Response.Write("建议操作成功!拒绝失败,错误原因:"); } XmlNode node2 = (XmlElement)xml_doc.DocumentElement.SelectSingleNode("/smit_telemed_result/state_msg"); try { RltStaMsg = node2.InnerText; } catch { context.Response.Write("no"); // context.Response.Write("建议操作成功!拒绝失败,错误原因:"); } if (RltStaID == "0") { context.Session["success"] = "success"; context.Response.Write("insertOk"); } else { context.Response.Write("建议操作成功!拒绝失败,错误原因:"); } }
首先,你得理清思路:
1.你的webservice部署的服务器和你开发的服务器是不是同一台机子。
2."webservice是别人的代码,我只是调用了一下人家的方法"你是直接通过添加引用来访问的?
3.如果你在本地调用时成功的,那么发布到iis上,直接通过浏览器地址栏访问时是否成功?
4.如果第3师成功的。那么通过程序访问报的错误是什么?
另外你可以看下http://www.cnblogs.com/fengchengjushi/p/3358291.html这个,如果还有不理解的。可以联系我。
您好,有几个地方不太明白,需要问您一下:
1.webservice 部署服务器和部署项目的服务器不是一台
2.调用我是直接添加的引用,然后在ashx中调用了一个方法
3.本地调用成功,发布到服务器上 config 中webservice中地址变了,但是两个Service地址都可以在浏览器中访问。
4.通过程序报这个错误
@情义之印:
@深谷&幽兰: 你好,可以帮我看下我的问题嘛?谢谢!!http://q.cnblogs.com/q/83972/
你的webService发布到服务器上面去了吗?地址对了吗?
我只是把项目发布的,没对webservice操作,webservice是别人的代码,我只是调用了一下人家的方法,webservice要发布怎么发布呢
@情义之印: 你在本地是怎么调用webservice 的?
@晓菜鸟: 添加服务引用,然后调用一个方法 webService发布是没问题的,地址我在浏览器上可以访问,项目和webservice的服务器不是一个
@情义之印: 问题1:你添加的引用的 dll 是存放在你的项目文件夹内部的吗?
问题2:把IIS应用程序池的“启用 32 位应用程序”设置为“true” 之后问题还是一样吗?
Telemedicine WS = new Telemedicine();
在你的 web.config 是如配置的?
<SmitERP.Properties.Settings> <setting name="SmitERP_TeleMedWS_Telemedicine" serializeAs="String"> <value>http://192.168.1.214:8002/Telemedicine.asmx</value> </setting> </SmitERP.Properties.Settings>
webconfig里面是这样写的 ,不知道是不是你想要看的那部分 http://192.168.1.214:8002/Telemedicine.asmx这个页面也是可以用的
@情义之印: 你可以在服务器上打开 IE,在地址栏中输入:http://192.168.1.214:8002/Telemedicine.asmx,测试服务器是否可以访问。
@Launcher: 这个是可以的,只是点出来显示的是一堆节点内容
@情义之印: 那访问没问题。你的服务器上的 web.config 也是这么配置的吧。然后你可以把调用时抛出的异常给贴出来看看。
@Launcher: 好的
@Launcher: 我发布到服务器上后异常就是本来该显示提示框的,然后没反应,我用ajax请求ashx时用的error 才发现错误的,大神,这个怎么整啊,在本地还能跟踪一下,就是部署到服务器上就没效果,也没法跟踪
@Launcher: 要不你把你qq发出来吧,咱们qq聊
@情义之印:
try { WS.ReuploadConsultation } catch(e) {context.Response.Write(e.Message);}
@Launcher: 你好,在服务器上我的异常效果是什么都不显示,在本地有异常效果弹框这是本地测试的异常
@情义之印: 你可以在本地机器上打开 IE,在地址栏中输入:http://192.168.1.214:8002/Telemedicine.asmx,测试服务器是否可以访问。
@Launcher: 这个是可以访问的,现在是本地异常没有了,就是发布到服务器上会出现这个错误
@情义之印: 把应用程序池的“启用 32 位应用程序”设置为“true”。
webconfig问题
大神,能说的具体一点吗
@情义之印: 跟楼上一个意思,听楼上的吧
你发布到服务器上后,你发布的服务器跟你调用的webservice服务器之间是通的么?
我不知道两个服务器之前是不是通的 现在我捕获到异常了 好像不通 在服务器上异常弹框都不显示 这是我在本地捕获的异常
@情义之印:这个效果看,肯定是不通了,你可以在发布的服务器上用ping命令去ping 192.168.1.241.
我估计肯定不通。那你的问题就是服务器通信的问题了。
@Alex_QY1987: 嗯嗯 谢谢你的思路,我试试