如何使用MS V C#2008 EE为Fiddler创建一个有效的扩展-dll?

时间:2010-02-22 11:03:44

标签: c# dll fiddler

这个问题依赖于TheChange's Question

要求已更改,因此我需要在Fiddler中使用具有相同任务的扩展名。

如何使用C#创建扩展名,Fiddler除外?

我可以在C#中创建一个dll - 我也尝试了旧的.net 2.0编译器..我首先尝试在Program-File文件夹中使用我的扩展名,然后在MyDocuments文件夹中使用(在Fiddler上提到的两个) - 网站)。

如果我从Fiddler-extensions下载一个extension-dll,可以在重启Fiddler之后使用它。

如果我在Fiddler运行时尝试替换我的.dll文件,Windows会告诉我.dll是由程序使用的,现在无法更改。扩展程序选项卡中显示的扩展名

现在我处于死胡同,不知道我现在应该搜索什么,因为没有其他人似乎有这个问题。

也许需要回答我的问题:

使用: MS Visual C#2008 Express Edition 我的项目另外与Fiddler和System.Windows.Forms相关联(没有找到Fiddler中提到的System.Windows.WinForms)。

在我的扩展程序中使用了[assembly: Fiddler.RequiredVersion("2.2.7.0")],我的Fiddler是2.2.8.x.

如果对答案感兴趣:我也使用IFiddlerExtension-Help描述来获取必要的代码。

我的主要问题是Fiddler没有给我任何记录或失败,但似乎找到了扩展但由于某种原因无法使用它。

    using System;
using System.Windows.Forms;
using Fiddler;

[assembly: Fiddler.RequiredVersion("2.2.7.0")]

namespace validate_js
{
    public interface IFiddlerExtension
    {
        // Called when Fiddler User Interface is fully available
        void OnLoad();

        // Called when Fiddler is shutting down
        void OnBeforeUnload();
    }
    public interface IAutoTamper : IFiddlerExtension
    {
        // Called before the user can edit a request using the Fiddler Inspectors
        void AutoTamperRequestBefore(Session oSession);

        // Called after the user has had the chance to edit the request using the Fiddler Inspectors, but before the request is sent
        void AutoTamperRequestAfter(Session oSession);

        // Called before the user can edit a response using the Fiddler Inspectors, unless streaming.
        void AutoTamperResponseBefore(Session oSession);

        // Called after the user edited a response using the Fiddler Inspectors.  Not called when streaming.
        void AutoTamperResponseAfter(Session oSession);

        // Called Fiddler returns a self-generated HTTP error (for instance DNS lookup failed, etc)
        void OnBeforeReturningError(Session oSession);
    }

    public class Violin : IAutoTamper
    {
        string sUserAgent = "";

        public Violin()
        {

            sUserAgent = "Violin";

        }
        public void OnLoad()
        {

            string strResponse;
            FiddlerApplication.Log.LogString("S&T-Script wird ausgeführt.");
            Fiddler.FiddlerApplication.BeforeResponse += delegate(Fiddler.Session oS)
            {
                strResponse = oS.GetResponseBodyAsString(); // safe BodyContent in strResponse
                if (System.String.Compare(strResponse, "getElementbyID", true) == 0)
                {

                    FiddlerApplication.Log.LogString("getElementbyID found - could have a different attitude in IE 8. Please check");

                }

            };

        }
        public void OnBeforeUnload()
        {

        }

        public void AutoTamperRequestBefore(Session oSession)
        {
            oSession.oRequest["User-Agent"] = sUserAgent;
        }
        public void AutoTamperRequestAfter(Session oSession) { }
        public void AutoTamperResponseBefore(Session oSession) { }
        public void AutoTamperResponseAfter(Session oSession) { }
        public void OnBeforeReturningError(Session oSession) { }

    }


}

我会尽可能地帮助你......

1 个答案:

答案 0 :(得分:2)

您正在重新声明命名空间中的IAutoTamperIFiddlerExtension接口,这些接口“隐藏”Fiddler命名空间中的实际接口。

如果您从代码中删除这些界面重新声明(只留下您的Violin类),您会发现您的DLL工作正常。