相关疑难解决方法(0)

不允许过滤

我已经实现了一个动作方法来缩小HTML,它提供了异常"不允许过滤"我已经搜索了互联网,但找不到任何合适的解决方案.请指导我这个问题将如何解决.我正在分享我的代码:

MinifyAttribute类:

public class MinifyAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {

        var request = filterContext.HttpContext.Request;
        var response = filterContext.HttpContext.Response;

        response.Filter = new Minify(response.Filter, s =>
        {
            s = Regex.Replace(s, @"\s+", " ");
            s = Regex.Replace(s, @"\s*\n\s*", "\n");
            s = Regex.Replace(s, @"\s*\>\s*\<\s*", "><");
            s = Regex.Replace(s, @"<!--(.*?)-->", "");   //Remove comments

            var firstEndBracketPosition = s.IndexOf(">");
            if (firstEndBracketPosition >= 0)
            {
                s = s.Remove(firstEndBracketPosition, 1);
                s = s.Insert(firstEndBracketPosition, ">");
            }
            return s;
        }); // i'm getting exception here on this …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

10
推荐指数
1
解决办法
2819
查看次数

阅读ActionFilterAttribute中的Asp.Net Core Response正文

我正在使用Asp.Net Core作为Rest Api服务。我需要访问ActionFilter中的请求和响应。实际上,我在OnActionExcecuted中找到了请求,但无法读取响应结果。

我正在尝试返回值,如下所示:

[HttpGet]
[ProducesResponseType(typeof(ResponseType), (int)HttpStatusCode.OK)]
[Route("[action]")]
public async Task<IActionResult> Get(CancellationToken cancellationToken)
{
    var model = await _responseServices.Get(cancellationToken);
    return Ok(model);
}
Run Code Online (Sandbox Code Playgroud)

并在ActionFilter的OnExcecuted方法中如下所示:

_request = context.HttpContext.Request.ReadAsString().Result;
_response = context.HttpContext.Response.ReadAsString().Result; //?
Run Code Online (Sandbox Code Playgroud)

我试图在ReadAsString中将响应作为扩展方法如下:

public static async Task<string> ReadAsString(this HttpResponse response)
{
     var initialBody = response.Body;
     var buffer = new byte[Convert.ToInt32(response.ContentLength)];
     await response.Body.ReadAsync(buffer, 0, buffer.Length);
     var body = Encoding.UTF8.GetString(buffer);
     response.Body = initialBody;
     return body;
 }
Run Code Online (Sandbox Code Playgroud)

但是,没有结果!

如何在OnActionExcecuted中获得响应?

谢谢大家花时间尝试帮助解释

asp.net asp.net-mvc .net-core asp.net-core

7
推荐指数
3
解决办法
3208
查看次数

包装/修改Html结果

基本上我们处在一个主要的hacky情况.我们有一些链接到其他网站的网页.但是,要求是此站点与链接到我们的站点具有相同的布局.这最初是通过请求原始页面,抓取布局以及在其布局中包装内容来完成的.

这在Web窗体中相当简单,因为我们可以简单地创建一个子类化的页面,它会覆盖Render方法,然后将我们在外部站点布局中生成的任何内容包装起来.但是,现在这个项目正在ASP.NET MVC中重写.

我们如何才能了解MVC操作创建的HTML结果,根据需要修改它们并将修改后的结果输出到浏览器?

c# asp.net-mvc

2
推荐指数
1
解决办法
2061
查看次数