Как отлаживать и/или отслеживать поток выполнения в WebMatrix?

Я только начинаю заниматься веб-разработкой (из-за фона разработки приложений для Windows), и WebMatrix кажется хорошим местом для начала из-за его простоты, а также потому, что он выглядит как полезный трамплин на пути к полной разработке ASP.NET MVC.

Однако отсутствие инструментов отладки немного мешает, особенно при попытке изучить основы разработки в веб-среде.

Отслеживание потока выполнения и отображение данных трассировки на странице кажется довольно простой возможностью для абсолютно минимального опыта отладки, но даже это, похоже, не встроено в WebMatrix (или, может быть, я просто еще не нашел его). ).

На одной странице легко установить переменную трассировки, а затем отобразить эту переменную в макете страницы. Но как это поможет, когда мне нужно отслеживать выполнение на других страницах в потоке (например, страницах макета, страницах _PageStart и т. д.) и даже в моих классах C#, используемых в процессе построения страницы.

Есть ли в WebMatrix возможность отслеживания, которую я еще не нашел? Или, в качестве альтернативы, есть ли способ реализовать средство трассировки, которое будет работать во всем приложении, а не только на одной странице? Даже сторонний продукт ($) будет лучше, чем ничего.


person Neville Cook    schedule 25.02.2011    source источник


Ответы (3)


Частью простоты WebMatrix (а для некоторых и привлекательности) является отсутствие наворотов, таких как отладчики и инструменты трассировки! Сказав это, я бы не стал делать ставку на то, что отладчик появится в будущем выпуске (вместе с Intellisense).

В WebMatrix у нас есть базовые возможности «печатать переменные на странице» с объектами ServerInfo и ObjectInfo, которые помогают выводить необработанную информацию во внешний интерфейс. Краткое руководство по использованию этих объектов можно найти на сайте asp.net: Введение в отладку.

Если вы хотите углубиться в отладку и трассировку на уровне IDE, я предлагаю вам использовать Visual Studio (подойдет любая версия, включая бесплатную версию Express).

Опять же, на сайте asp.net есть отличное введение в это: Программирование веб-страниц ASP.NET в Visual Studio.

Ключевыми моментами являются установка Visual Web Developer 2010 Express и ASP.NET MVC3 RTM. Это также даст вам удобную кнопку «Запустить Visual Studio» в WebMatrix. Не беспокойтесь, потому что вы все еще создаете сайты Razor Web Pages, просто это происходит в Visual Studio.

person eddiegroves    schedule 25.02.2011

Существует отладчик Razor. (в настоящее время версия 0.1) в области пакетов (Nuget) в WebMatrix.

person Mike Brind    schedule 25.02.2011
comment
Кажется, это немного лучший ответ, учитывая окружающую среду. - person VoidKing; 15.06.2013

WebMatrix возвращает нас к классическим дням отладки с помощью предупреждений/печати. Не идеально, но в этом есть определенная простота и искусство. Но иногда бывает сложно добраться до ваших переменных и многого другого, когда у вас есть проблема в вашем коде. Я решил большинство своих проблем с отладкой с помощью простого класса Debug.

Создайте файл Debug.cs в каталоге App_Code со следующим кодом:

using System;
using System.Collections.Generic;
using System.Web;
using System.Text;

public class TextWrittenEventArgs : EventArgs {
    public string Text { get; private set; }
    public TextWrittenEventArgs(string text) {
        this.Text = text;
    }
}

public class DebugMessages {
  StringBuilder _debugBuffer = new StringBuilder();

  public DebugMessages() {
    Debug.OnWrite += delegate(object sender, TextWrittenEventArgs e) { _debugBuffer.Append(e.Text); };
  }

  public override string ToString() {
    return _debugBuffer.ToString();
  }
}

public static class Debug {
  public delegate void OnWriteEventHandler(object sender, TextWrittenEventArgs e);
  public static event OnWriteEventHandler OnWrite;

  public static void Write(string text) {
    TextWritten(text);
  }

  public static void WriteLine(string text) {
    TextWritten(text + System.Environment.NewLine);
  }

  public static void Write(string text, params object[] args) {
    text = (args != null ? String.Format(text, args) : text);
    TextWritten(text);
  }

  public static void WriteLine(string text, params object[] args) {
    text = (args != null ? String.Format(text, args) : text) + System.Environment.NewLine;
    TextWritten(text);
  }

  private static void TextWritten(string text) {
    if (OnWrite != null) OnWrite(null, new TextWrittenEventArgs(text));
  }
}

Это даст вам статический класс под названием Debug, который имеет ваш типичный метод WriteLine. Затем на своих страницах CSHTML вы можете обновить объект DebugMessages. Вы можете .ToString() выводить отладочные сообщения.

 var debugMsg = new DebugMessages();
 try {
    // code that's failing, but calls Debug.WriteLine() with key debug info
 }
 catch (Exception ex) {
   <p>@debugMsg.ToString()</p>
 }
person mattmc3    schedule 04.01.2013