可以在你的WebMethod加入
Context.Response.Filter = new ResponseFilters.myFilter(Context.Response.Filter);
在该asmx中WebService之外的地方加入
namespace ResponseFilters
{
public class myFilter : Stream
{
private Stream _sink;
private long _position;
public myFilter(Stream sink)
{
_sink = sink;
}
// The following members of Stream must be overriden.
public override bool CanRead
{
get { return true; }
}
public override bool CanSeek
{
get { return true; }
}
public override bool CanWrite
{
get { return true; }
}
public override long Length
{
get { return 0; }
}
public override long Position
{
get { return _position; }
set { _position = value; }
}
public override long Seek(long offset, SeekOrigin direction)
{
return _sink.Seek(offset, direction);
}
public override void SetLength(long length)
{
_sink.SetLength(length);
}
public override void Close()
{
_sink.Close();
}
public override void Flush()
{
_sink.Flush();
}
public override int Read(byte[] buffer, int offset, int count)
{
return _sink.Read(buffer, offset, count);
}
// The Write method actually does the filtering.
public override void Write(byte[] buffer, int offset, int count)
{
//在这里处理,把<soap:Header>替换成<SOAP-ENV:Header>
//实现自己做吧,实在犯懒
Array.Copy(data, 0, datOutput, apdStr.Length, count);