用于拦截耗时的 Web 请求的 Visual Studio 插件
Posted
技术标签:
【中文标题】用于拦截耗时的 Web 请求的 Visual Studio 插件【英文标题】:Visual studio plugin to intercept time consuming web request 【发布时间】:2021-12-01 12:47:29 【问题描述】:这是我们正在开发的一个asp.net webform 网站。在一个 xx.aspx.cs 文件中,它从 Google 服务器获取网络响应。
var content = new FormUrlEncodedContent(recaptchaDetails);
var response = client.PostAsync("https://www.google.com/recaptcha/api/siteverify", content).Result;
var responseString = response.Content.ReadAsStringAsync().Result;
var obj = JsonConvert.DeserializeObject<RecaptchaResponse>(responseString);
每次我在本地计算机上调试此页面时,Visual Studio 都会启动 IIS Express 以运行服务器代码。在 IIS Express 处理页面时,在我的本地计算机上加载来自 Google 的响应需要很长时间。不方便调试。
这是我解决这个问题的想法。
在我的本地机器上调试时更改代码。将其更改为模拟返回的对象。但是每次我提交代码时,我都必须回滚这个块。有可能被提交到 git server 的风险。
var response = new Xxx()
使用 Fiddler 拦截这个请求给 Google 并从磁盘返回一个文件。但是每次调试之前,我都必须打开 fiddler。
是否有任何 Visual Studio 插件或 IIS Express 插件来拦截对 Google 的请求并直接从磁盘文件返回响应?
【问题讨论】:
恕我直言,将此实现移至服务。并在调试版本中提供不同的服务实现。 这是一个非常非常古老的asp.net webform 网站。它如何部署到服务器?没有编译,没有构建。它只是直接将 Git 中的所有文件复制到 windows 服务器中的 IIS 中。我想知道调试构建在这种情况下是否有效? 警告获取异步调用的.Result
可能是result in a deadlock
这可以使用#if DEBUG
来完成,请参见此处:docs.microsoft.com/en-us/dotnet/csharp/language-reference/… 然后确保在部署到 Web 服务器之前始终进行发布构建。
@PeterB 这是一个非常古老的 asp.net webform 项目。不会构建asp.net页面,直接复制到IIS。 #if DEBUG
会这样工作吗?
【参考方案1】:
这可以使用 #if DEBUG
来完成,这称为条件编译指令。
通常最好在 VS 中进行 Release 构建(这会为所有页面创建一个包含优化代码的 DLL),然后将 bin\Release
文件夹的内容部署到 Web 服务器。如果您使用Web Project -> right click -> Publish...
,那么这应该会自动发生。
如果您将所有源文件手动复制到 IIS,那么在 IIS 上文件可能或可能不会在“DEBUG “ 模式。我试过了,在一个简单的页面中,条件编译指令运行良好,但 DEBUG 没有激活。
在您的情况下发生的情况可能取决于您的 web.config 中的内容,如 this answer 中所述,但我没有亲自尝试过。
【讨论】:
以上是关于用于拦截耗时的 Web 请求的 Visual Studio 插件的主要内容,如果未能解决你的问题,请参考以下文章