相关疑难解决方法(0)

条件编译和框架目标

如果目标框架是较新版本,那么我的项目代码可能会有一些小的地方可以大大改进.我希望能够更好地利用C#中的条件编译来根据需要切换它们.

就像是:

#if NET40
using FooXX = Foo40;
#elif NET35
using FooXX = Foo35;
#else NET20
using FooXX = Foo20;
#endif
Run Code Online (Sandbox Code Playgroud)

这些符号中的任何一个都是免费的吗?我是否需要将这些符号作为项目配置的一部分注入?看起来很容易,因为我知道哪个框架是MSBuild的目标.

/p:DefineConstants="NET40"
Run Code Online (Sandbox Code Playgroud)

更新:我的问题是人们如何处理这种情况?你在创造不同的配置吗?您是否通过命令行传递常量?

c# msbuild .net-4.0 .net-3.5

121
推荐指数
4
解决办法
5万
查看次数

设置存储在Blob上的媒体文件的内容类型

我们在Azure上托管了一个网站.它是基于媒体的,我们正在使用JWPlayer来播放带有HTTP伪流的媒体.媒体文件以3种格式存储在blob上 - mp4,ogg,webm.

问题是媒体文件的内容类型被设置为所有类型的application/octet-stream.因此,媒体播放和进度条中存在一些问题.

如何设置存储在blob上的相应内容类型的文件(如 - video/mp4,video/ogg,video/webm)?

我不希望通过进入blob接口手动为每个文件执行此操作.必须有其他方法来做这件事,我不知道.也许配置文件,设置文件等排序.或者也许是一个代码块,用于为存储在文件夹中的所有文件设置Content-type.

有什么建议?谢谢

content-type azure jwplayer

66
推荐指数
4
解决办法
5万
查看次数

.NET中的文件扩展名和MIME类型

我想从给定的扩展名中获取MIME Con​​tent-Type(最好不要访问物理文件).我已经看到了一些关于这个的问题,并且描述执行此操作的方法可以恢复:

  1. 使用注册表信息.
  2. 使用urlmon.dll的FindMimeFromData.
  3. 使用IIS信息.
  4. 滚动自己的MIME映射功能.例如,基于此表.

我已经使用no.1一段时间但我意识到注册表提供的信息不一致,取决于机器上安装的软件.某些扩展名(如.zip)不用于指定Content-Type.

解决方案2迫使我将文件放在磁盘上以便读取第一个字节,这可能很慢,但可能会得到很好的结果.

第三种方法基于目录服务和所有这些东西,这是我不喜欢的东西,因为我必须添加COM引用,我不确定它在IIS6和IIS7之间是否一致.另外,我不知道这种方法的表现.

最后,我不想使用我自己的表,但最后似乎是最好的选择,如果我想要一个不错的性能和平台之间的结果的一致性(甚至单声道).

你认为有比使用我自己的表更好的选择或其他一种描述的方法更好吗?你有什么经历?

.net asp.net file-extension mime content-type

53
推荐指数
4
解决办法
7万
查看次数

在ASP.NET 5中使用MimeMapping(vNext)

我正在尝试将我的旧mvc5项目移动到mvc6.旧代码是:

public string ContentType
{
    get
    {
        if (!string.IsNullOrEmpty(FileName))
            return MimeMapping.GetMimeMapping(FileName);
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

错误是

当前上下文中不存在名称"MimeMapping"

在此输入图像描述

c# system.web mime-types asp.net-core-mvc

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

如何在ASP.Net Core中为Server.MapPath获取绝对路径

如何获得ASP网络核心替代方式的绝对路径 Server.MapPath

我试过使用IHostingEnvironment但它没有给出正确的结果.

IHostingEnvironment env = new HostingEnvironment();
var str1 = env.ContentRootPath; // Null
var str2 = env.WebRootPath; // Null, both doesn't give any result 
Run Code Online (Sandbox Code Playgroud)

我在wwwroot文件夹中有一个图像文件(Sample.PNG)我需要获取这个绝对路径.

c# asp.net asp.net-core-mvc .net-core asp.net-core

29
推荐指数
4
解决办法
4万
查看次数

ASP.NET MVC按文件/文件路径确定mime类型

我正在使用ASP.NET MVC 3.该应用程序的目标是.net 4.0.

我试图将虚拟路径作为参数传递给我的控制器的操作并返回文件而不查看服务器上的实际物理路径并提供基本授权.不幸的是,我无法为File方法找到合适的重载来生成适当的ActionResult.我被困在确定文件的mime类型.

我找到了一些用文件名来确定mime-types的解决方案,但是没有一个能让我满意.我想知道当你在服务器上请求文件时,IIS如何确定mime类型?是否有可能以某种方式向IIS传递确定响应的mime类型的责任

iis asp.net-mvc mime-types asp.net-mvc-3

12
推荐指数
1
解决办法
9048
查看次数

替代Urlmon.dll中具有更多MIME类型的FindMimeFromData方法

通过Windows DLL可访问的FindMimeFromData方法Urlmon.dll能够确定存储在内存中的给定数据的MIME类型,考虑到存储此类数据的字节数组的前256个字节.

然而,在阅读了它的文档后,我在Windows Internet Explorer中引领了MIME类型检测,在那里我可以找到此方法能够识别的MIME类型.见清单.如您所见,此方法仅限于26种MIME类型.

所以我想知道是否有人能指出我有更多MIME类型的另一种方法,或者另外一种方法/类我可以包含我认为合适的MIME类型.

谢谢.

c# mime-types

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

流式传输大型视频文件.net

我试图从HttpHandler流式传输webforms中的大文件.它似乎不起作用,因为它不流式传输文件.而是将文件读入内存然后将其发送回客户端.我全神贯注地寻找解决方案,解决方案告诉我他们在执行同样的操作时会流式传输文件.我的流解决方案是这样的:

using (Stream fileStream = File.OpenRead(path))
{
    context.Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(360.0));
    context.Response.Cache.SetCacheability(HttpCacheability.Public);
    context.Response.AppendHeader("Content-Type", "video/mp4");
    context.Response.AppendHeader("content-length", file.Length);
    byte[] buffer = new byte[1024];
    while (true)
    {
      if (context.Response.IsClientConnected)
     {
       int bytesRead = fileStream.Read(buffer, 0, buffer.Length);
       if (bytesRead == 0) break;
       context.Response.OutputStream.Write(buffer, 0, bytesRead);
       context.Response.Flush();
     }
     else
     {
       break;
     }

   }
   context.Response.End();
}
Run Code Online (Sandbox Code Playgroud)

发生的事情是小文件,如果我调试代码,它将播放视频,但直到它到达context.Respond.End()行.但是对于大文件,这不起作用,因为它将整个文件存储在内存中会带来问题.

c# asp.net webforms ihttphandler video-streaming

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

.tex 文件的正确 mime 类型是什么?

我的网络服务生成并返回一个 .tex 文件。我想在 http 标头中给出正确的 mimetype。

除了在这里我找到的以外,我没有找到那么多application/x-tex。这是一个值得坚守的权威吗?

mime-types

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

打开字节数组作为文件窗口形式

在Windows窗体应用程序中,我有一个存储为byte []的文件.

当用户单击按钮时,我想打开文件而不将其保存在本地.这是可能的,如果,那怎么样?

或者我必须将字节数组保存为本地文件然后运行此文件?

谢谢,卡尔

c# bytearray file winforms

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

从 Google Chrome 下载文件时出现网络错误

我编写了下面的 C# 代码用于下载应用程序中的附件,当我运行代码时,我可以使用 Mozilla、Internet Explorer 下载文件,但这在 Google Chrome 中不起作用。

string base64FileString = result;
byte[] binaryFile = Convert.FromBase64String(base64FileString);
Response.ContentType = "application/octet-stream";
Response.AddHeader("content-disposition", String.Format("attachment; filename=\"{0}\"", Request.QueryString["FILENAME"]));
Response.Clear();
Response.BufferOutput = false;
Response.ClearContent();
Response.BinaryWrite(binaryFile);
Response.Flush();
Response.Close();
Run Code Online (Sandbox Code Playgroud)

谁能帮助我在 Chrome 中下载需要做哪些更改

c# asp.net asp.net-mvc c#-3.0 c#-4.0

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