Спасибо за вашу помощь, однако я нашел то, что искал на http://msdn.microsoft.com/en-us/library/system.web.services.protocols.soapextension.aspx
Чтобы помочь кому-то еще новичку в реализации этого через WebService, я включил шаги, которые я выполнил для его реализации, и изменения, чтобы я мог сохранить его в БД, а также в файловую систему. Я выполнил следующие шаги. Если у вас есть какие-либо вопросы, пожалуйста, не стесняйтесь, и я буду рад ответить.
- Создан файл кода в моем проекте веб-сервиса с кодом, указанным в статье
Создано несколько свойств для хранения значений для сохранения в БД
private string _requestXml;
private DateTime _start;
Затем я изменил метод WriteInput для сохранения значений в этих переменных.
public void WriteInput(SoapMessage message)
{
//Begin Edit
oldStream.Position = 0;
_requestXml = new StreamReader(_oldStream).ReadToEnd();
_start = DateTime.UtcNow;
//End Edit
//Begin Original Code
oldStream.Position = 0;
Copy(oldStream, newStream);
var fs = new FileStream(filename, FileMode.Append, FileAccess.Write);
var w = new StreamWriter(fs);
var soapString = (message is SoapServerMessage) ? "SoapRequest" : "SoapResponse";
w.WriteLine("-----" + soapString + " at " + DateTime.Now);
w.Flush();
newStream.Position = 0;
Copy(newStream, fs);
w.Close();
newStream.Position = 0;
}
Затем я изменил WriteOutput на
public void WriteOutput(SoapMessage message)
{
//Begin Edit
var responseXml = new StreamReader(newStream).ReadToEnd();
newStream.Position = 0;
//Start process for saving to DB
//"_requestXml" = Original Request Soap Message
//"responseXml" = Service Returned Response
//"_start" = Request Start Time
//message.MethodInfo.Name = I save this so I know what method from
//message.Url = I save this so I know the original ASMX that was hit
//End Edit
//Begin Original Code
newStream.Position = 0;
var fs = new FileStream(filename, FileMode.Append, FileAccess.Write);
var w = new StreamWriter(fs);
var soapString = (message is SoapServerMessage) ? "SoapResponse" : "SoapRequest";
w.WriteLine("-----" + soapString + " at " + DateTime.Now);
w.Flush();
Copy(newStream, fs);
w.Close();
newStream.Position = 0;
Copy(newStream, oldStream);
}
Теперь все, что осталось, это добавить следующее к вашему сервисному вызову, и вы должны быть в порядке.
[WebMethod, NameSpace.OfyourTraceExtesionClass.TraceExtension]
public void WebMethod1()
{
//DoSomeStuff
}