小编Sim*_*sco的帖子

在IIS7.5中,哪个模块删除了400 Bad Request的主体

我编写了ASP.NET(4.0)代码,如果发布到服务器的数据有效,则将Response.StatusCode设置为400.
我以请求接受标头要求的格式在响应正文中放置有用的信息.例如,一条html消息说"需要日期字段......".

在Windows 7上的IIS7(7.5.7600)中,我将正确的html响应返回给浏览器.

在Windows 2008上的IIS7(7.5.6000)中,我没有得到html主体,但只有一个带有"错误请求"的文本正文作为内容.

有人能指出我如何更改2008服务器的配置以返回正文.
或者这些版本的IIS之间有区别吗?
也许是Machine.config中的一个模块?
例如,我知道(并且必须解决)FormsAuthentication模块将401更改为302,即使您不想这样做.可能有一个模块停止发送400的内容.

TIA.

asp.net http httpresponse iis-7.5

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

为什么这个泛型约束在它似乎有一个循环引用时编译

我在csharp中为MVCContrib Html助手编写了一个扩展方法,并对通用约束的形式感到惊讶,从表面看它通过类型参数循环引用自身.

据说这种方法可以根据需要进行编译和工作.

我希望有人解释为什么这有效,如果存在更直观的直观语法,如果没有人知道为什么?

这是编译和功能代码,但我删除了T的例子,因为它使问题蒙上阴影.以及使用List <T>的类似方法.

namespace MvcContrib.FluentHtml 
{
  public static class FluentHtmlElementExtensions
  {
    public static TextInput<T> ReadOnly<T>(this TextInput<T> element, bool value)
        where T: TextInput<T>
    {
        if (value)
            element.Attr("readonly", "readonly");
        else
            ((IElement)element).RemoveAttr("readonly");
        return element;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

    /*analogous method for comparison*/
    public static List<T> AddNullItem<T>(this List<T> list, bool value) 
        where T : List<T>
    {
        list.Add(null);
        return list;
    }
Run Code Online (Sandbox Code Playgroud)

在第一种方法中,约束T:TextInput <T>似乎是所有意图和目的,循环.但是,如果我发表评论,我会收到编译错误:

"类型'T'不能在泛型类型或方法'MvcContrib.FluentHtml.Elements.TextInput <T>'中用作类型参数'T'.没有从'T'到'MvcContrib的装箱转换或类型参数转换.FluentHtml.Elements.TextInput <T>"".

在List <T>的情况下,错误是:

"'System.Collections.Generic.List.Add(T)'的最佳重载方法匹配有一些无效的参数参数1:无法从'<null>'转换为'T'"

我可以想象一个更直观的定义是包含2种类型的定义,对泛型类型的引用和对约束类型的引用,例如:

public static TextInput<T> ReadOnly<T,U>(this TextInput<T> element, bool value) 
    where U: TextInput<T>
Run Code Online (Sandbox Code Playgroud)

要么 …

c# generics constraints

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

EF DataContext选择未保存的对象

我正在尝试实现一个UnitOfWork类型模式,其中一个DataContext用于一小组相关方法,并且只在最后保存更改.但是,我发现添加到ObjectContext的实体似乎可以重新选择,除非我正在尝试避免使用SaveChanges.有人能告诉我这是否是预期的行为?我提供了一个psuedo测试来说明:

    [Test]
    public void ObjectContext_ShouldSelectBackUncommitedValuesWhenUsingTheSameContext()
    {
        //arrange
        var entityConnectionString = "MyEntityConnectionString";
        var dataContext = new MyObjectContext(entityConnectionString);

        var personCount = dataContext.People.AsQueryable<Person>().Count();
        var person = new Person() { Name = "Bob" };

        //act
        dataContext.AddToPeople(person);

        //assert
        var actualPerson = dataContext.People.AsQueryable<Person>().Where(p => p.Name == "Bob").FirstOrDefault();
        Assert.IsTrue(actualPerson != null,"Uncommitted Person should return when using same context");

        var actualCount = dataContext.People.AsQueryable<Person>().Count();
        Assert.IsTrue(actualCount == personCount + 1, String.Format("Expected {0} people but got {1} people", personCount + 1, actualCount));

        //leave transaction to rollback

    }
Run Code Online (Sandbox Code Playgroud)

此测试失败,其中actualPerson为null且People的Count设置未递增.请原谅我是否有任何拼写错误,因为我刚刚简化了自己的ObjectContext.

仅供参考我使用的是EF 4.

TIA. …

entity-framework

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