Я использую Asp.net MVC, и я пытаюсь отладить мой метод, записав данные сообщения в файл журнала.Получение данных после запроса от запроса возвращается
Я взял это сообщение C# .net equivilent of HTTP_RAW_POST_DATA? и попытался запустить его.
Вот мой ActionResult
:
public ActionResult Receipt(string id)
{
try
{
using (var sw = new StreamWriter(@"C:\LOGS\RECEIPTLOG.TXT", true))
{
sw.WriteLine("-------------------------------------------");
sw.WriteLine("Start Receipt: " + DateTime.Now);
sw.WriteLine("Browser: " + Request.Browser.Id);
sw.WriteLine("Browser Version: {0}.{1}", Request.Browser.MajorVersion, Request.Browser.MinorVersion);
sw.WriteLine("Request.UserHostAddress: " + Request.UserHostAddress);
if (Request.UrlReferrer != null)
{
sw.WriteLine("Request.UrlReferrer: " + Request.UrlReferrer);
}
foreach (var headerKey in Request.Headers.Keys)
{
var headerValues = Response.Headers.GetValues(headerKey.ToString());
if (headerValues != null)
{
sw.WriteLine("Response Header: {0}, Value: {1}", headerKey, String.Join(";", headerValues));
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("error:" + ex.Message);
}
var control = Logging.StartLog();
control.Source = SourceEnum.WebPortal;
try
{
Logging.WriteLog("Start Receipt");
var count = 0;
var postVals = new Dictionary<string, string>();
foreach (var key in Request.Form.AllKeys)
{
Logging.WriteLog("count: " + count);
Logging.WriteLog(string.Format("key: {0} Value: {1}", key, Request.Form[key]));
postVals.Add(key, Request.Form[key]);
Logging.WriteLog("finished count: " + count);
count++;
}
Logging.WriteLog("finished processing ALLKeys");
var paymentReq = createPaymentRequest(postVals);
Logging.WriteLog("finished processing 'var paymentReq = createPaymentRequest(postVals)' ");
Logging.WriteLog("_client.RecordPaymentWithRequest start");
var receipt = _client.RecordPaymentWithRequest(paymentReq);
Logging.WriteLog("Running _client.RecordPaymentWithRequest complete");
var retval = PartialView(receipt.Duplicate ? "Duplicate Receipt" : "Receipt", receipt);
Logging.WriteLog(string.Format("retval: {0}", retval));
return retval;
}
catch (Exception ex)
{
Logging.WriteException(ex);
throw;
}
finally
{
Logging.WriteLog(control, "End RegisterNewAccountEmail");
try
{
using (var sw = new StreamWriter(@"C:\LOGS\RECEIPTLOG.TXT", true))
{
sw.WriteLine("Stop Receipt: " + DateTime.Now);
}
}
catch (Exception ex)
{
Console.WriteLine("error:" + ex.Message);
}
}
}
Это то, что в конечном итоге в моем журнале:
-------------------------------------------
Start Receipt: 1/14/2014 7:17:07 AM
Browser: internetexplorer
Browser Version: 11.0
Request.UserHostAddress: xxx.xxx.xxx.xxx
Request.UrlReferrer: website url here
Stop Receipt: 1/14/2014 7:17:07 AM
Как вы можете видеть, что нет никакой информации заголовка записывается.
Я собираюсь сделать это неправильно, чтобы вывести данные сообщения в файл журнала? Если нет, любые идеи, почему моя информация заголовка не записывается в журнал?
** UPDATE **
Я добавил это к моим лесозаготовкам в первую попытке/улове:
sw.WriteLine("Request.Headers.Keys.Count: " + Request.Headers.Keys.Count);
и это результаты:
Request.Headers.Keys.Count: 11
Вы уверены, что используете POSTING? Запросы GET не имеют тела. Что такое 'Request.ContentLength'? – spender
Отладка кода - есть ли значения в headerValues? Кроме того, убедитесь, что вы публикуете свои данные: добавьте POST-атрибут к вашему действию. –
Я добавил дополнительную информацию, keys.count равно 11. Я предполагаю, что это значит, что есть данные для публикации? – ErocM