By default ASP.NET checks for HTTP Response Splitting attack when you do Response.Redirect:
Response.Redirect("/MySite/Default.aspx?lang=foobar%0d%0aContentLength:%200%0d%0a%0d%0aHTTP/1.1%20200%20OK%0d%0aContentType:%20text/html%0d%0aContentLength:%2019%0d%0a%0d%0a<html>Shazam</html>");
Result - error page:
A potentially dangerous Request.QueryString value was detected from the client (lang="...th: 19
<html>Shazam</html>").
Description: Request Validation has detected a potentially dangerous client input value, and processing of the request has been aborted. This value may indicate an attempt to compromise the security of your application, such as a cross-site scripting attack. You can disable request validation by setting validateRequest=false in the Page directive or in the configuration section. However, it is strongly recommended that your application explicitly check all inputs in this case.
Is there any other way to perform HTTP Response Splitting attack on default ASP.NET website configuration? What about ASP.NET MVC?
%0acookie: test=1
HttpResponse.AppendHeader
simply has to disallow newlines in header names and values, this is sufficient to prevent the attack. And I mostly certain that it does that and what you've hit here is actually the second line of defense.