在一个.NET分布式应用程序的开发中,遇到了一个问题,困扰了我很久,今天终于
有了一些眉目.
问题是这样的,我用VS.NET 2003
创建了一个分布式应用程序,其中一个project是WebService,写了一些代码以后,经过测试,一切OK,于是信心大增,等完成了数据访问层和规则层等,已经是两个月以后的事了,经过初步考虑,决定对整个系统的输出文件名进行调整,以使程序集名称与namespace一致。
数据访问层的名空间为
XXX.Access
程序集名修改为XXX.Access.DLL
规则层的名空间为
XXX.Ruler,程序集名修改为XXX.Ruler.DLL
............................................................................................................
WebService的名空间为
XXX.Webs,默认的程序集名为Service.DLL,修改后为XXX.Webs.DLL
客户端程序的名空间为
XXX.WinUI
执行程序名为XXX.WinUI.exe。
XXX表示解决方案名称,一切调整完毕,在IDE中运行测试,还好,没什么问题。
于是继续实现其它功能,一日,在debug文件夹下双击运行XXX.WinUI.exe,调用一个WebService中的方法GetData时,问题来了,弹出了一个提示窗,内容是:“服务器未能识别http标头SOAPAction的值:http://tempuri.org/GetData”,当时不明白这其中的原因,于是在CSDN上发了求助贴,各式各样的回答都有,试了网友提供的一些方法,最终没能解决问题.
只好重新打开VS.NET重新编译运行,代码没有任何修改,在IDE中运行却是正常的,真有点糊涂了,以后总是关闭IDE后运行就不正常,打开IDE编译运行又正常。
今天又出了同样的问题,可恶的“服务器未能识别http标头SOAPAction的值”又弹出了,
真有点头大了,我打开了IE,地址栏中输入了
http://localhost/XXX/DataService.asmx
,敲回车,这一次我有了收获,
浏览器显示内容如下(灰色背景为浏览器输出.)
1行 DataService
2行
下列操作。有关正式定义,请查看服务说明。
3行 Web 服务使用 http://tempuri.org/
作为它的默认命名空间。
(其余内容略,行号为本人所加)
正常情况下,2行到3行之间为方法列表,也就是函数名称,现在是空白的,怪不得客户端程序中调用时说不可识别的SOAPAction,原来服务器上就不存在这一方法GetData。
编译运行时完全正常,现在为何在服务器端就没有这些方法了呢?我百思不得其解,打开
单螺杆泵
http://localhost/XXX/所在的bin目录,发现了一些蛛丝马迹,在bin目录下好几个程序集,其中有两个是Service.DLL和XXX.Webs.DLL,前者是修改程序集名称之前的输出文件,后者是修改程序集名之后的输出文件,将Service.DLL移出bin目录,在浏览器地址栏中输入
http://localhost/XXX/DataService.asmx
这时候,IE显示的内容如下:
DataService
支持下列操作。有关正式定义,请查看服务说明。
UpdateData
AddData
GetData
此 Web 服务使用 http://tempuri.org/
作为它的默认命名空间。
(余略)
这时候在debug目录下双击运行XXX.WinUI.exe,得到了和IDE中一样的结果。
原来,service.DLL和XXX.Webs.DLL中均存在名空间“XXX.Webs”以及同名的webService类,但是Service.DLL中不存在以后新增的方法,当客户请求这一方法时,服务器首先在Service.DLL程序集中查找到了名空间,找到名空间后在相应的服务类中查找方法,找到 单螺杆泵后执行,找不到则给客户反馈信息“服务器未能识别http标头SOAPAction”,为什么不首先在XXX.Webs.DLL中查找而是在service.DLL中查找呢?这可能与.NET(ver
1.1)优先查找有默认名称的程序集有关(有没有这一优先规则尚不确定,仅是猜测),也可能与程序集名称的字母排列顺序有关。
为什么在VS.NET的IDE中运行时又是正常的呢?我想是这样的,因为解决方案中指定了输出程序集的名称,这时候客户调用时仅在指定的程序集中查找名空间及方法,所以不会出现找不到函数名称的情况。
看来古人说的太太太对了, " 多一事不如少事",不修改程序集名称就没有这一档子事了.
注:VS2005(.NET
2.0)中如果有两个程序集中中包含了相同名的名空间及webService类,好象浏览器中会产生类型重复定义之类提示.具体情况网友可以验证
linux
看上去挺美,实际上还是有很多麻烦的地方,一个地方没弄好,你就得去查半天.
按我上次的经验,有了图形界面也不解决问题.
这次我是装了一个纯文本的
RHEL 5.
1, 服务的启动: service smb restart
2, 防火墙的设置: 运行 setup
将关于samba那一项,打开.
按照以上设置,可以看到目录了, 但仍不能访问,反复修复 smb.conf
甚至还从山东另一台
linux 上照搬,还是不行.再一查,原来是新版本的linux 多了一个叫
selinux 的东东,导致无法访问.
3, 关闭selinux
的方法
setenforce 0
#这是临时关闭,结果发现有效.也可永久关闭,但还可以不关闭.
4,
rhel5中不关闭SeLinux配置SAMBA的方法
http://hlee.javaeye.com/blog/375355
#/usr/sbin/setsebool
-P allow_smbd_anon_write=1
#chcon -t public_content_rw_t /share
5,
限制写入的文件类型,(这样病毒啥的就进不来了)
veto files =
/*.exe/*.com/*.dll/*.rmvb/*.rm/*.mp3/*.vbs/
6,
限制每个目录的配额
不可以,但是你可以对文件系统做quota,指定这个文件夹所属的群组,从而对文件夹的大小进行限制,我就是这么做的。
http://bbs.chinaunix.net/viewthread.php?tid=785738
这个功能还没有试过,明天试试!
7,
性能问题.
开始传数据发现比较慢,比如一个110M的文件,传到2003要45秒,传到SAMBA要1分多钟,发现一个选项很管用,设置后传到SAMBA只要15秒,优于2003!
在[global]节添加:
socket
options = TCP_NODELAY SO_RCVBUF=8192
SO_SNDBUF=8192
http://fifi258.blog.163.com/blog/static/325827412008267417920/
服务器未能识别http标头SOAPAction的值
时间: 2024-10-17 13:20:49
服务器未能识别http标头SOAPAction的值的相关文章
服务器未能识别 HTTP 标头 SOAPAction 的值
SOAPAction HTTP request header被用来标识SOAP HTTP请求的目的地,其值是个URI地址.SOAP发送并不限制格式.URI特征或其必须可解析,那么在这种情况下,发送一个HTTP SOAP请求时,其HTTP客户端必须使用/指明SOAPAction HTTP request header. SOAPAction header的内容可以被用在服务端,诸如:防火墙适当的过滤基于HTTP的SOAP请求消息等场景.SOAPAction header的值为空串("")
服务器未能识别 HTTP 头 SOAPAction 的值
错误原因就是“ 服务器未能识别 HTTP 头 SOAPAction 的值”.这是由于webservice发生url错误导致的. 解决方法: 一.你把webserver地址加上?wsdl既可以解决问题,即http://XXXX/SendService?wsdl. 二.通过添加web引用方式的,你删除web引用再重新添加web引用即可,引用的地址还是http://xxxx/cccc.asmx 也不需要wsdl.
webserver引用出现”服务器未能识别 HTTP 头 SOAPAction 的值
今天来上班发现网站首页调用的数据有问题了,经过检查,那调用的地方是通过webserver来获取数据的.我通过webserver调试工具,发现该 接口是正常的.是什么问题呢??还好这有记录了错误处理的信息,通过log找到. “System.Web.Services.Protocols.SoapException: System.Web.Services.Protocols.SoapException: 服务器未能识别 HTTP 头 SOAPAction 的值: http://tempuri.org
服务器未能识别http头soapaction的值
公司真是坑的一比 ,连接PDA报出这个错误 网上找的解决方案: 加什么wsdl http://www.cnblogs.com/dengxinglin/archive/2012/05/02/2478687.html 修改ws头文件 http://blog.csdn.net/e_wsq/article/details/7268983
asp.net MVC中使用Html.Checkbox提示该字符串未被识别为有效的布尔值错误的解决方法
在asp.net MVC中使用Html.CheckBox提交后出现该字符串未被识别为有效的布尔值错误,或从类型“System.String”到类型“System.Boolean”的参数转换失败. 错误例子:@Html.CheckBox("UserID",item.IsTrue,new{value=item.UserID}) 这是由于MVC会在页面上生成<input id="UserID" name="UserID" value="
服务器虚拟化识别USB加密狗ukey动态迁移加密狗解决方案
服务器虚拟机识别USB加密狗方案 传统方案 1):硬件狗直连服务器 1.1):虚拟化无法读取USB接口 1.2):使用Vmvare飘移技术后无法使用硬件狗 1.3):刀片服务器USB口少,无法直连硬件狗 2):USB-Over-Network 2.1):需要单独使用PC机或者服务器,浪费设备,并且占用机房空间 2.2):使用过的同事反馈使用中稳定性差 2.3):USB接口有限,扩展需要加HUB,导致稳定性会更差 硬件方案 1):使用USB-SERVER硬件设备 1.1):根据不同的型号,端口数量
云服务器如何识别真假
作为IT基础设施资源的新一代交付和使用模式,云服务器近两年在国内风生水起,迅速赢得市场认可,越来越多的企业开始将关键业务迁移上云.受到市场刺激,国内大大小小的服务商纷纷推出云服务器产品,但其中不乏以VPS滥竽充数的冒牌云服务器,混淆视听.那么,云服务器如何识别真假,避免上当受骗呢? 一.从数据存储方式识别真假 真的云服务器,是部署在大量服务器集群构建的云端资源池中,是基于网络的分布式数据存储,无单点故障.假云,所有数据是存储在单台服务器的本地硬盘中,无法实现分布式部署,因此将始终面临机器硬件故障
服务器机房搬迁导致服务器无法识别raid怎么办
[服务器数据恢复故障描述]北京某公司的机房进行搬迁,重新连接线路后发现服务器无法识别RAID,服务器未做初始化操作.客户服务器为LINUX操作系统,构建了NFS+FTP作为公司内部文件服务器使用.服务器型号为HP DL380 G4,使用hp smart array控制器挂载了一台国产磁盘阵列,服务器磁盘阵列由14块146G SCSI硬盘组成一组RAID5.,HP smart array系列控制器源自康柏,RAID中的冗余采用双循环的校验方式.管理员对服务器进行简单检查后并没有做其他尝试性操作,数
cxf WebService设置wsdl中soapAction的值
用cxf开发一个WebService很简单,只需要下面几步: 1.定义接口 public interface HelloService { String hello(); } 2.实现 public class HelloServiceImpl implements HelloService { @Override public String hello() { return "hi,my name is gyoung "; } } 3.用ServerFactoryBean生成服务 p