小编Rob*_*Rob的帖子

C#mvc图像上传调整大小服务器端

我有一个web应用程序,用户可以上传图像.我遇到的当前问题是正在上传的图像以原始格式保存到数据库中.当在网页上使用图像时,这会导致很多性能问题.我使用dotTrace来分析应用程序,我发现从数据库处理图像时会出现重大问题.

我的想法是在图像上传到服务器时调整图像大小.以下示例,我希望应用程序在用户上传新图像时执行此操作;

  1. 用户上传图像
  2. 在72 dpi时,图像的大小调整为7.500 x 7.500像素
  3. 图像正在保存到数据库中
  4. 原始文件被处置

唯一存储的图像是上面提到的图像,web应用程序包含动态调整大小的技术.

我已经在SO上阅读了几个主题.而且他们中的大多数都指向了ImageMagick的方向.这个工具在我的公司已经很熟悉,并且在PHP项目中使用.但是这个工具有没有任何好的和稳定的C#包装器?我已经找到了下面的工具,但他们要么在Béta发布,Alpha发布,要么当前没有更新.

ImageMagick.NET

ImageMagick APP

我也在SO上找到了这个话题.在本主题中,提供了以下代码示例;

private static Image CreateReducedImage(Image imgOrig, Size newSize)
{
    var newBm = new Bitmap(newSize.Width, newSize.Height);
    using (var newGrapics = Graphics.FromImage(newBm))
    {
        newGrapics.CompositingQuality = CompositingQuality.HighSpeed;
        newGrapics.SmoothingMode = SmoothingMode.HighSpeed;
        newGrapics.InterpolationMode = InterpolationMode.HighQualityBicubic;
        newGrapics.DrawImage(imgOrig, new Rectangle(0, 0, newSize.Width, newSize.Height));
    }

    return newBm;
}
Run Code Online (Sandbox Code Playgroud)

总之,我有问题;

  • 使用上面的示例,在性能方面是否有任何优势?
  • 我可以使用ImageMagick做一个好的,可靠的C#包装器吗?

欢迎任何有关表演的其他好建议!

c# asp.net asp.net-mvc image-processing

7
推荐指数
1
解决办法
5102
查看次数

C#更改上传图像的dpi

我必须遵循被调用来改变图像分辨率的函数.我想这样做,所以上传的图像例如300dpi将被修改为72dpi(对于web).这个问题与我在哪里工作的另一个问题有关.

我创建了一个扩展方法,可以在我的应用程序中的更多位置使用此功能,而不是仅在上载新文件时.(见上述问题)

public static byte[] SetDpiTo72(this byte[] imageToFit, string mimeType, Size newSize)
{    
    using (MemoryStream memoryStream = new MemoryStream(), newMemoryStream = new MemoryStream())
    {
        memoryStream.Write(imageToFit, 0, imageToFit.Length);
        var originalImage = new Bitmap(memoryStream);

        using (var canvas = Graphics.FromImage(originalImage))
        {
            canvas.SmoothingMode = SmoothingMode.AntiAlias;
            canvas.InterpolationMode = InterpolationMode.HighQualityBicubic;
            canvas.PixelOffsetMode = PixelOffsetMode.HighQuality;
            canvas.DrawImage((Image)originalImage,0,0, newSize.Width, newSize.Height);

            newBitmap.SetResolution(72, 72);
            newBitmap.Save(newMemoryStream, ImageFunctions.GetEncoderInfo(mimeType), null);
        }
        return newMemoryStream.ToArray();
    }
}
Run Code Online (Sandbox Code Playgroud)

提到的扩展方法在类似于下面情况的函数中被调用;

if (newSize.Width > originalImage.Width && newSize.Height > originalImage.Height)
{
     newSize.Width = originalImage.Width;
     newSize.Height = originalImage.Height;

     uploadedFileBuffer = …
Run Code Online (Sandbox Code Playgroud)

c# asp.net memorystream image-processing stream

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

XSLT拆分结果为3组

Web应用程序为我提供了一个XML-feed,我无法改变.我想要做的是将这个XML-feed分成几个无序列表.我正在尝试使用下面的XSLT.

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"  xmlns:xsl="http://www.w3.org/1999/XSL/Transform" >    
  <xsl:output method="xml" omit-xml-declaration="yes" indent="yes" encoding="utf-8" />
  <xsl:param name="html-content-type" />
  <xsl:template match="/NavigationTree">
    <xsl:if test="count(//Page) > 0">
      <ul>
        <xsl:apply-templates select="Page">
        </xsl:apply-templates>
      </ul>
    </xsl:if>
  </xsl:template>

  <xsl:template match="//Page">    
    <li class="{position() mod 3}">
      <xsl:text disable-output-escaping="yes"><![CDATA[»&nbsp;]]></xsl:text>
      <a>
        <xsl:attribute name="href">
          <xsl:value-of select="@FriendlyHref" disable-output-escaping="yes"/>
        </xsl:attribute>
        <xsl:value-of select="@MenuText" disable-output-escaping="no"/>
      </a>
    </li>

    <xsl:if test="position() mod 3 = 0">
      <xsl:if test="position() &lt; count(//Page)">
        <!--Don't know if this is the correct approach, but when the position is 3 and there are more items following …
Run Code Online (Sandbox Code Playgroud)

xml xslt xpath xslt-2.0

7
推荐指数
2
解决办法
6091
查看次数

使用jQuery来控制视频标签

所以,我想使用jQuery函数从链接的REL中收集URL,并将其传递给元素.

收集REL并将其发送到没有问题...但是从jQuery触发元素的加载和播放功能需要什么?

这是我到目前为止所拥有的:

$(function(){   
    $('a.componentLink').click(function() {
        event.preventDefault();
        var vidURL = $(this).attr('rel');
        $('#myVideo > source').attr('src', vidURL);
        $('#myVideo').load();
        $('#myVideo').play();
    })
});
Run Code Online (Sandbox Code Playgroud)

ATM,它没有播放......我认为jQuery本身无法访问播放功能......但必须有办法解决这个问题.

html javascript video jquery

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

C# Entity Framework 内存使用率高,内存泄漏?

我有一个使用 Entity Framework 6 运行的小型 MVC Web 应用程序。通过浏览我的开发人员上的主页(例如 www.mywebsite.dev)启动应用程序时。机器应用程序池开始并按预期加载页面。

尽管主页非常轻量级并且仅从数据库中获取一些内容(2 个菜单、2 个带有文本的段落以及一个包含 3-4 个对象的集合),但应用程序池在刚刚加载后已经 > 200 MB (!)主页一次..

使用这篇文章和这篇文章,我设法弄清楚了如何分析管理内存,并且我还删除了一些阻止上下文处理的静态属性。DbContext 已禁用延迟加载,

public class MyContext: DbContext
    {
        private readonly Dictionary<Type, EntitySetBase> _mappingCache = new Dictionary<Type, EntitySetBase>();

        #region dbset properties
        //Membership sets
        public IDbSet<UserProfile> UserProfiles { get; set; }
        public IDbSet<Project> Project { get; set; }
        public IDbSet<Portfolio> Portfolio { get; set; }
        public IDbSet<Menu> Menu { get; set; }
        public IDbSet<MenuItem> MenuItem { get; set; }
        public IDbSet<Page> …
Run Code Online (Sandbox Code Playgroud)

c# memory asp.net-mvc memory-leaks entity-framework

6
推荐指数
1
解决办法
1万
查看次数

使用xval进行C#mvc2客户端表单验证,防止发布

我正在使用xval在我的asp.net mvc2 web应用程序中使用客户端验证.尽管我在数字字段中输入文本时会出现错误,但它仍然会尝试将表单发布到数据库中.错误的值将被替换为0并保存到数据库中.但相反,甚至不可能尝试提交表格.有人可以帮我从这里出去吗?

我已将属性设置如下:

[Property]
[ShowColumnInCrud(true, label = "FromPriceInCents")]
[Required]
//[Range(1, Int32.MaxValue)]
public virtual Int32 FromPriceInCents{ get; set; }
Run Code Online (Sandbox Code Playgroud)

捕获请求的控制器如下所示; 我在这部分没有错误.

[AcceptVerbs(HttpVerbs.Post)]
[Transaction]
[ValidateInput(false)]
public override ActionResult Create()
{
  //some foo happens
}
Run Code Online (Sandbox Code Playgroud)

我的观点如下:

<div class="label"><label for="Price">FromPrice</label></div>
<div class="field">
<%= Html.TextBox("FromPriceInCents")%>
<%= Html.ValidationMessage("product.FromPriceInCents")%></div>
Run Code Online (Sandbox Code Playgroud)

在视图的最后,我有以下规则,在html代码中生成正确的验证规则

<%= Html.ClientSideValidation<Product>("Product") %>
Run Code Online (Sandbox Code Playgroud)

我希望有人可以帮助我解决这个问题,提前谢谢!

编辑:4月19日我刚刚发现有一个正常的按钮被使用而不是输入类型="按钮"这可能是问题吗?

<button class="save" type="submit" name="save"><span>Opslaan</span></button>
Run Code Online (Sandbox Code Playgroud)

javascript c# validation asp.net-mvc xval

5
推荐指数
1
解决办法
1249
查看次数

MVC3自定义错误页面给出空白结果

使用博客张贴在这里和一个主题在这里,所以我已经创建了一个控制器,它应该处理我所有的错误页面.

在我的Global.asax.cs中,我得到了以下代码:

protected void Application_Error()
        {
            var exception = Server.GetLastError();
            var httpException = exception as HttpException;
            var routeData = new RouteData();

            Response.Clear();
            Server.ClearError();

            routeData.Values["controller"] = "Error";
            routeData.Values["action"] = "General";
            routeData.Values["exception"] = exception;
            Response.StatusCode = 500;

            if (httpException != null)
            {
                Response.StatusCode = httpException.GetHttpCode();
                switch (Response.StatusCode)
                {
                    case 403:
                        routeData.Values["action"] = "Http403";
                        break;
                    case 404:
                        routeData.Values["action"] = "Http404";
                        break;
                }
            }

            // Avoid IIS7 getting in the middle
            Response.TrySkipIisCustomErrors = true;
            IController errorsController = new ErrorController();
            HttpContextWrapper …
Run Code Online (Sandbox Code Playgroud)

error-handling asp.net-mvc-3

5
推荐指数
1
解决办法
2839
查看次数

C#linq order by和foreach的其他语句,是否有性能差异?

我正在使用实体框架,集合以及那里的usting where-conditions和order by actions进行编程.我一直在问这个问题,但从来没有弄明白.

假设我已经得到了两段代码;

例1:

// An unsorted string array.
string[] letters = { "d", "c", "a", "b" };
// Use LINQ query syntax to sort the array alphabetically.
var sorted = from letter in letters
         orderby letter
         select letter;

// Loop with the foreach keyword.
foreach (string value in sorted)
{
    Console.WriteLine(value);
}
Run Code Online (Sandbox Code Playgroud)

例2:

// An unsorted string array.
string[] letters = { "d", "c", "a", "b" };

// Loop with the foreach keyword.
foreach (string val in …
Run Code Online (Sandbox Code Playgroud)

c# linq performance query-performance

5
推荐指数
1
解决办法
2392
查看次数

如何在asp.net core 2中验证facebook web api

我目前正在 Xamarin.Forms 中构建我的第一个移动应用程序。该应用程序有一个 facebook 登录,在用户登录后,我存储 facebook 令牌,因为我想将它用作不记名令牌来验证针对 API 的任何进一步请求。

该 API 是一个 .NET core 2.0 项目,我正在努力使身份验证正常工作。

在我的 Xamarin.Forms 应用程序中,使用以下代码将 facebook 令牌设置为不记名令牌;

_httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", UserToken);
Run Code Online (Sandbox Code Playgroud)

据我所知,这正确地在请求的标头中设置了承载令牌。我和我的一位同事谈过这个问题,他告诉我看一下 Identityserver4,它应该支持这个。但目前,我决定不这样做,因为对我来说,目前实施这一点是有开销的。因此,我决定坚持使用 Facebook 代币作为不记名代币的想法并验证这一点。

因此,我的下一步是找到一种方法来通过 Facebook 验证传入的不记名令牌,以检查它是否(仍然)有效。所以我为我的 API 项目配置了启动,如下所示;

public class Startup
{
    public Startup(IConfiguration configuration)
    {
        Configuration = configuration;
    }

    public IConfiguration Configuration { get; }

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddAuthentication(o =>
        {
            o.DefaultAuthenticateScheme = …
Run Code Online (Sandbox Code Playgroud)

c# facebook asp.net-web-api bearer-token asp.net-core

4
推荐指数
1
解决办法
6813
查看次数

GetElementById不是函数?

运行此脚本时,我收到一条错误消息,即document.GetElementById不是函数?- 您可以在以下网址查看该网站:http://www.fritidsjobbere.dk:

//Show random div with Javascript
antal = 6;
var randomnumber=Math.floor(Math.random()*antal);
if(randomnumber == "0") {
randomnumber = 1;
}
//alert(randomnumber);
document.getElementsById("partner-ad"+randomnumber).style.display = 'block'; 
Run Code Online (Sandbox Code Playgroud)

javascript

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