小编Evg*_*eni的帖子

WebApi:如何将状态从过滤器传递给控制器​​?

我在动作过滤器中提取了一些用户数据,并且可以在控制器的操作中使用一些数据,但不完全确定如何将数据从过滤器传递到控制器.在MVC中,我可能会使用session或HttpContext.Items,但它在web api中不可用.另一种选择是使用ThreadStatic,但我认为必须有更好的解决方案?

asp.net-web-api

26
推荐指数
1
解决办法
9964
查看次数

如何从angular的$ httpBackend返回文件内容?

我正在尝试以角度设置e2e测试套件,并且需要使用$ httpBackend返回预设响应.如果我能够返回文件内容,那将是很好的,例如

  $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
    return getContentOf("/somefile");
  });
Run Code Online (Sandbox Code Playgroud)

我尝试使用$ http,这是一些东西

  $httpBackend.whenPOST('/phones').respond(function(method, url, data) {
    return $http.get("/responses/phones.js");
  });
Run Code Online (Sandbox Code Playgroud)

但它不起作用,猜角度不支持从$ httpBackend返回承诺?

我可以做的一种方法是引用带有应用程序加载响应的js文件,并将文件的内容分配给变量,但是能够按需加载数据会更好.

javascript angularjs angular-mock

21
推荐指数
3
解决办法
7708
查看次数

EF 4.1和"集合已被修改;枚举操作可能无法执行".例外

在过去的两天里,这让我疯狂.我有3个非常基本的类(好了,为了便于阅读而减少)

public class Employee 
{
    public string Name { set; get; }
    virtual public Employer Employer { set; get; }

    public Employee(string name)
    {
        this.Name = name;
    }
}
Run Code Online (Sandbox Code Playgroud)

,

// this basically ties Employee and his role in a company.
public class EmployeeRole{
    public int Id { set; get; }
    virtual public Employee Employee { set; get; }
    public string Role { set; get; }

    public EmployeeRole(Employee employee, string role){
        this.Employee = employee;
        this.Role = role;
    }
}
Run Code Online (Sandbox Code Playgroud)

和 …

c# entity-framework-4.1

15
推荐指数
2
解决办法
8838
查看次数

我在哪里可以找到MSpec文档?

刚刚发现了MSpec,想要尝试一下.但是,我找不到任何详细的文档,除了一些快速教程 - 它们是否存在?

unit-testing mspec

14
推荐指数
2
解决办法
4956
查看次数

在Web Deploy工具中设置自动备份

我一直在努力设置自动备份,但似乎已经碰壁了.按照本文档并使用Powershell,我启用了备份(TurnOn-Backups -On $ true,然后是Configure-Backups -SiteName"test1"-Enabled $ true ;所以Get-BackupSettings -SiteName"test1"告诉我备份已启用).

但是,每当我从Visual Studio发布时,都不会创建备份.我已设置备份路径,权限设置为允许每个人的所有内容..所以我不知道我还能检查什么.

webdeploy microsoft-web-deploy

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

获取SignalR中的当前集线器

有没有一种从控制器调用SignalR hub中的方法的好方法?

现在我有这个:

public class StatsHub : Hub
{
    private static readonly Lazy<StatsHub> instance = new Lazy<StatsHub>(() => new StatsHub());
    public static StatsHub Instance { get { return instance.Value; } }

    public StatsHub()
    {
        if (this.Clients == null)
        {
            var hubContext = SignalR.GlobalHost.ConnectionManager.GetHubContext<StatsHub>();
            this.Clients = hubContext.Clients;
            this.Groups = hubContext.Groups;
        }
    }

    // methods here...
}
Run Code Online (Sandbox Code Playgroud)

所以在我的控制器动作中,我可以说,例如

StatsHub.Instance.SendMessage("blah");
Run Code Online (Sandbox Code Playgroud)

它几乎是好的,除了hubContext没有Hub的Caller或Context属性 - 这很好.

希望有更好的方法吗?

signalr

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

WebApi 2返回类型

我正在查看文档WebAPI 2,我对动作结果的构建方式感到非常失望.我真的希望有更好的方法.

所以文档说我可以返回这些:

**void**    Return empty 204 (No Content)

**HttpResponseMessage** Convert directly to an HTTP response message.

**IHttpActionResult**   Call ExecuteAsync to create an HttpResponseMessage, then convert to an HTTP response message.

**Other type**  Write the serialized return value into the response body; return 200 (OK).
Run Code Online (Sandbox Code Playgroud)

我没有看到一个干净的方法来返回具有自定义HTTP状态代码,自定义标头和自动协商内容的项目数组.

我希望看到的是类似的东西

public HttpResult<Item> Post()
{
   var item = new Item();
   var result = new HttpResult<Item>(item, HttpStatusCode.Created);
   result.Headers.Add("header", "header value");

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

这样我就可以浏览一个方法并立即看到返回的内容,并修改状态代码和标题.

我发现最接近的是NegotiatedContentResult<T>,带有奇怪的签名(为什么它需要一个控制器实例?),但是没有办法设置自定义头文件?

有没有更好的办法 ?

c# asp.net-web-api asp.net-web-api2

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

ServiceStack - 是否有最新的完整文档?

我试图围绕ServiceStack,虽然它声称它有非常好的文档,但到目前为止似乎并非如此.是否有文档实际上说明了要使用哪些接口/基类,以及它们做了​​什么?

只是..有一堆问题,并且可以找到很少的答案..一个新的API设计显示了一个DTO实现IReturn接口的例子,以及从服务继承的服务 - 但是如果这是现在的首选方式则没有解释,是吗需要实现IReturn,如何处理POST/GET /等等等.

任何链接将不胜感激.

是的,我有样品,但是例如他们在这个IReturn接口上没有任何东西..并且样品无论如何都不会打败文档.

servicestack

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

将对象列表转换为List vs IList

刚发现这个:

Func<List<object>> foo = () => new List<object>();
List<string> s = (List<string>)foo();
IList<string> s1 = (IList<string>)foo();
Run Code Online (Sandbox Code Playgroud)

编译器抱怨转换为List(有意义),但没有提及IList.让我想知道为什么会这样?

c# casting

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

MVC,ORM和数据访问模式

我想我已经达到了"分析瘫痪"的状态.我有一个MVC应用程序,使用EF作为ORM.所以我正在尝试决定最好的数据访问模式,到目前为止我认为将所有数据访问逻辑放入控制器是要走的路......但它听起来有点不对劲.另一种选择是创建外部存储库,处理数据交互.这是我的利弊:

如果嵌入数据访问控制器,我将得到这样的代码:

using (DbContext db = new DbContext())
{
    User user = db.Users.Where(x=>x.Name == "Bob").Single();
    user.Address.Street = "some st";
    db.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

所以有了这个,我得到了延迟加载的全部好处,我在完成后立即关闭连接,我对where子句的灵活性 - 所有的细节.con - 我在一个方法中混合了一堆东西 - 数据检查,数据访问,UI交互.

使用Repository,我正在外部化数据访问,理论上,如果我决定使用ado.net或使用不同的数据库,则可以替换repos.但是,我没有看到实现延迟加载的良好清洁方式,以及如何控制DbContext /连接的生命周期.说,我有CRUD方法的IRepository接口,我如何加载属于给定用户的地址列表?像GetAddressListByUserId这样的方法看起来很丑陋,错误,并且会让我创建一堆同样丑陋的方法,并且在使用ORM时没什么意义.

我确信这个问题已经解决了几百万次,希望有一个解决方案..


关于存储库模式的另一个问题 - 如何处理属性对象?例如,用户有一个地址列表,您将如何检索该列表?为地址创建存储库?使用ORM,地址对象不必具有回复用户的引用,也不需要具有repo的Id字段 - 它必须拥有所有这些.更多代码,更多暴露属性..

c# asp.net-mvc orm design-patterns asp.net-mvc-3

8
推荐指数
2
解决办法
3114
查看次数