我有一個合同第一個wcf服務...我想要在保存到數據庫之前以編程方式捕獲原始SOAP請求/響應@服務器並將其擦亮。我需要這個過程來達到一些審計目的。有人知道怎麼做這個嗎?
注意:我不想通過在web.config文件中進行配置來執行wcf跟蹤。以編程方式攔截wcf請求/響應
預先感謝您...
我有一個合同第一個wcf服務...我想要在保存到數據庫之前以編程方式捕獲原始SOAP請求/響應@服務器並將其擦亮。我需要這個過程來達到一些審計目的。有人知道怎麼做這個嗎?
注意:我不想通過在web.config文件中進行配置來執行wcf跟蹤。以編程方式攔截wcf請求/響應
預先感謝您...
你可以實現你自己的Messageinspector,我不確定這是否是足夠讓你但它值得一試。
我想你可以使用SOAP extension
另一種解決方案可以編寫定製HttpModule
在這裏您將能夠操縱請求時,它到達之前,.NET發動機
public class LogModule : IHttpModule
{
public void Init(HttpApplication context)
{
context.BeginRequest += this.OnBegin;
}
private void OnBegin(object sender, EventArgs e)
{
HttpApplication app = (HttpApplication)sender;
HttpContext context = app.Context;
byte[] buffer = new byte[context.Request.InputStream.Length];
context.Request.InputStream.Read(buffer, 0, buffer.Length);
context.Request.InputStream.Position = 0;
string soapMessage = Encoding.ASCII.GetString(buffer);
// Do something with soapMessage
}
public void Dispose()
{
throw new NotImplementedException();
}
}
只是好奇 - 爲什麼你不想使用跟蹤? –
@TadDonaghe:大概就像我一樣,他需要他人,順便說一句,可以跟蹤原始信息並保存它們嗎?我期待有時回覆的響應不會是wcf代理類所期望的,因爲已知服務團隊在開發週期後破壞合同並更改wsdl,因此需要獲取原始請求/響應。 – Arjang