小编cuo*_*gle的帖子

如何使用jQuery Ajax调用从ASP.NET Web Api下载CSV文件

我正在研究如何从jQuery ajax调用从ASP.NET Web Api下载CSV文件.CSV文件是基于自定义CsvFormatter从Web API服务器动态生成的.

来自jQuery的Ajax:

   $.ajax({
        type: "GET",
        headers: {
            Accept: "text/csv; charset=utf-8",
        },
        url: "/api/employees",
        success: function (data) {
        }
    });
Run Code Online (Sandbox Code Playgroud)

在服务器上,EmployeeCsvFormatter实现类似于下面的文章,派生自BufferedMediaTypeFormatter:

http://www.asp.net/web-api/overview/formats-and-model-binding/media-formatters

public class EmployeeCsvFormatter : BufferedMediaTypeFormatter
{
    public EmployeeCsvFormatter()
    {
        SupportedMediaTypes.Add(new MediaTypeHeaderValue("text/csv"));
    }
    ...
}
Run Code Online (Sandbox Code Playgroud)

我还添加了覆盖方法来表示我想像下载文件一样下载文件(可以在下载选项卡中看到下载文件):

 public override void SetDefaultContentHeaders(Type type, 
    HttpContentHeaders headers, MediaTypeHeaderValue mediaType)       
{
    base.SetDefaultContentHeaders(type, headers, mediaType);
    headers.Add("Content-Disposition", "attachment; filename=yourname.csv");
    headers.ContentType =  new MediaTypeHeaderValue("application/octet-stream");
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,下载文件没有显示在Chrome的状态栏或下载标签中,即使来自Fiddler,我看到它的响应似乎是正确的:

HTTP/1.1 200 OK
Server: ASP.NET Development Server/11.0.0.0
Date: Mon, 11 Mar 2013 08:19:35 GMT …
Run Code Online (Sandbox Code Playgroud)

c# jquery asp.net-web-api

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

在IIS 7中启动应用程序时出现"CS0016:无法写入输出文件"错误

我正在运行Windows 7,并且通常不是此设置中的开发人员,并且最近在C#中构建了WCF Rest服务,我现在正尝试在本地计算机上部署到IIS.经过多次争论,我设置了应用程序,但是当我导航到应用程序时,我收到一条错误消息:编译错误

描述:编译服务此请求所需的资源时发生错误.请查看以下特定错误详细信息并相应地修改源代码.

编译器错误消息:CS0016:无法写入输出文件'c:\ Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files\scom_sibyll\8c0b945e\9329016\App_global.asax.eagmqgcd.dll' - '访问被拒绝."

我尽最大努力搜索网络,并更改了Temporary ASP.NET Files fodler的权限,以允许网络服务帐户拥有完整权限,并对Temp文件夹执行相同操作.它在失败之前复制了许多文件,因此它可能具有写入权限,因此我检查了从源文件夹中读取的权限,这也是有效的.我还注意到它在尝试缓存DLL文件时出现问题,并尝试关闭我的防病毒保护,以及关闭UAC,只是为了看看是否能够找出阻止这种情况发生的原因.我现在的想法很新鲜.有人有什么建议吗?

c# iis permissions wcf iis-7

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

为什么IEnumerable <T>被定义为IEnumerable <out T>,而不是IEnumerable <T>

可能重复:
为什么IEnumerable <T>在C#4中变成了协变?

我正在MSDN上查看IEnumerable<T>接口定义,并看到:

public interface IEnumerable<out T> : IEnumerable
Run Code Online (Sandbox Code Playgroud)

我想知道为什么T被定义为out,为什么不呢?

public interface IEnumerable<T> : IEnumerable
Run Code Online (Sandbox Code Playgroud)

这是什么原因?

c# linq c#-4.0

15
推荐指数
3
解决办法
4415
查看次数

为什么编译器不允许在catch块中使用await

假设我有一个异步方法:

public async Task Do()
{
    await Task.Delay(1000);
}
Run Code Online (Sandbox Code Playgroud)

另一种方法是尝试Docatch块内调用方法

public async Task DoMore()
{
    try
    {
    }
    catch (Exception)
    {
        await Do(); //compiled error.
    }
}
Run Code Online (Sandbox Code Playgroud)

但是这样,编译器不允许await在里面使用catch,有没有任何理由在幕后为什么我们不能这样使用呢?

c# asynchronous async-await c#-5.0

14
推荐指数
1
解决办法
2422
查看次数

ADAL.NET v3不支持使用UserCredential的AcquireToken?

在ADAL.NET 2.x中,我们使用以下代码从Azure AD中获取令牌UserCredential并且它完美地运行:

 var authContext = new AuthenticationContext(Authority);
 var userCredential = new UserCredential(username, password);
 var token = authContext.AcquireToken(ResourceUrl, ClientId, userCredential);
Run Code Online (Sandbox Code Playgroud)

当我今天升级ADAL.NET v3时,代码无法再编译,因为在新版本中,UserCredential没有使用用户名和密码重载构造函数.

我如何使用新版本的ADAL.NET v3解决这个问题?

c# azure azure-active-directory adal

14
推荐指数
1
解决办法
9649
查看次数

SQL Server中Information_schema与sys表之间的区别

SQL Server中的information_schema表和sys表是什么?它们之间有什么区别?

谢谢

sql sql-server

14
推荐指数
1
解决办法
7301
查看次数

为什么在带有含义AND的标志枚举中使用按位OR运算符

这可能是一个简单而简单的问题,但我仍然有点混淆bitwise OR决定使用的原因.假设我有一个A包含四个字段的类:

class A
{
    private int Field1;
    private static int Field2;
    public int Field3;
    public static int Field4;
}
Run Code Online (Sandbox Code Playgroud)

Reflection用来获取字段:

var fields = typeof (A).GetFields(BindingFlags.Public | BindingFlags.Static);
Run Code Online (Sandbox Code Playgroud)

如果你是新手,Reflection并且不知道如何使用BindingFlags,那么你头脑中最初的逻辑思维是:

此行将选择所有静态OR公共字段,因为使用了按位OR.你想到的预期结果:

Field2
Field3
Field4
Run Code Online (Sandbox Code Playgroud)

但是当击中F5时,结果将完全不同,按位的OR方式如下AND:

Field4
Run Code Online (Sandbox Code Playgroud)

为什么不使用可能跟随逻辑思维的按位AND运算符.像这样:

var fields = typeof (A).GetFields(BindingFlags.Public & BindingFlags.Static);
Run Code Online (Sandbox Code Playgroud)

我在MSDN中找到了单词:

在某些情况下,用于组合标志的按位OR运算可能被认为是一种高级概念,简单任务不应该这样做.

请允许任何人以简单的方式解释这里的先进概念以便理解吗?

.net c# c#-4.0

13
推荐指数
1
解决办法
2025
查看次数

你可以重载Sum来添加自定义类型

我有一个Money结构,有货币和金额.我希望能够使用linq对List进行求和.

public struct Money
{
    public string Currency { get; set; }
    public decimal Amount { get; set; }

    public static Money operator +(Money m1, Money m2)
    {
        if (m1.Currency != m2.Currency)
            throw new InvalidOperationException();

        return new Money() { Amount = m1.Amount + m2.Amount, Currency = m1.Currency };
    }
}
Run Code Online (Sandbox Code Playgroud)

给定上面的代码,如果我有一个具有Money值对象的Items列表,则可以使Sum函数与Money值对象一起使用.

Items.Sum(m => m.MoneyValue);
Run Code Online (Sandbox Code Playgroud)

c# linq ienumerable

11
推荐指数
1
解决办法
4204
查看次数

在3层架构中使用DTO

我使用简单的3层架构.在这里我使用DTO类在UI,BL和DL之间进行通信.那么层之间的沟通有更好的方法吗?或者这是正确的方法?

c# 3-tier dto

11
推荐指数
2
解决办法
5028
查看次数

在命名空间内放置using语句失败

我试图用stylecop正确设计一些旧代码.它要求将using语句放在里面.它除了一个以外都适用.我已将问题减少到以下代码.

namespace B.C
{
    using System;

    public class Hidden
    {
        public void SayHello()
        {
            Console.WriteLine("Hello");
        }
    }
}

namespace A.B.C
{
    using B.C;

    public class Program
    {
        static void Main(string[] args)
        {
            new Hidden().SayHello();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这给出了编译错误错误

"无法找到类型或命名空间名称'隐藏'(您是否缺少using指令或程序集引用?)".

如果我使用BC移动; 在命名空间ABC之上,然后它正确构建.Hidden类是由不同的团队开发的,我们无法对其进行修改.

c# namespaces

11
推荐指数
1
解决办法
1023
查看次数