Как отладить и / или отследить поток выполнения в WebMatrix? - PullRequest
8 голосов
/ 25 февраля 2011

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

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

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

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

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

Ответы [ 3 ]

5 голосов
/ 25 февраля 2011

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

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

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

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

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

4 голосов
/ 25 февраля 2011

Есть Razor Debugger (в настоящее время версия 0.1) в области «Пакеты (Nuget)» в WebMatrix.

1 голос
/ 04 января 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>
 }
...