小编Eri*_*ken的帖子

删除空元素的填充

我正在为即将推出的门户网站生成一个页面,我有一个带有一些可选内容的HTML元素.如果元素为空,我希望元素不呈现,但是为它添加一些填充会导致它呈现.如何向内容添加填充,但仅限于内容存在?

.someElement{padding-top: 5px;}
Run Code Online (Sandbox Code Playgroud)

有问题的HTML:

<div class="someElement">With padded content</div>
<div class="someElement"><!-- shouldn't render since it has no content --></div>
Run Code Online (Sandbox Code Playgroud)

基本上,我希望上面的第二个元素不占用任何空间.我正在使用XHTML 1.1 doctype在所有主流浏览器中进行测试.

html css cross-browser

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

如何将Expires响应头添加到WebAPI Action响应中?

我很确定"Expires"是有效的HTTP Response Header类型.但是当我尝试在我的代码中设置它时:(这是在ActionFilter.OnActionExecuted方法中)

actionExecutedContext.Response.Headers.Add("Expires", (DateTime.Now + Timespan.FromDays(7)).ToString("R"));
Run Code Online (Sandbox Code Playgroud)

我最终得到一个例外:

InvalidOperationException:未使用的标头名称.确保请求标头与HttpRequestMessage一起使用,响应标头与HttpResponseMessage一起使用,内容标头与HttpContent对象一起使用.

caching http-headers asp.net-web-api

15
推荐指数
1
解决办法
5349
查看次数

如何覆盖WebAPI中的所有标准错误页面

我漂亮的REST网络服务很棒.除非我访问类似的页面~/,它返回默认的IIS 403 Forbidden页面(即使使用Fiddler并仅指定Accept: application/json).我只想要JSON或XML错误.有没有办法用自定义异常处理程序覆盖所有异常?或者一个默认的控制器来处理所有未知请求?什么是最简单,最正确(如果不同)的方法来处理这个问题,以便客户端只需要解析REST API友好的XML数据报或JSON blob?

示例请求:

GET http://localhost:7414/ HTTP/1.1
User-Agent: Fiddler
Host: localhost:7414
Accept: application/json, text/json, text/xml
Run Code Online (Sandbox Code Playgroud)

回复:(我不喜欢,注意这text/html不是可接受的响应类型之一)

HTTP/1.1 403 Forbidden
Cache-Control: private
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/8.0
X-SourceFiles: =?UTF-8?B?QzpcaWNhcm9sXENoYXJpdHlMb2dpYy5pQ2Fyb2wuQXBp?=
X-Powered-By: ASP.NET
Date: Fri, 25 Jan 2013 21:06:21 GMT
Content-Length: 5396

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>IIS 8.0 Detailed Error - 403.14 - Forbidden</title> 
<style type="text/css"> 
<!-- 
...
Run Code Online (Sandbox Code Playgroud)

回复(我更喜欢):

HTTP/1.1 403 Forbidden
Cache-Control: private
Content-Type: application/json; charset=utf-8 …
Run Code Online (Sandbox Code Playgroud)

iis error-handling asp.net-web-api

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

使用EF和WebAPI,如何返回ViewModel并支持IQueryable/OData?

我有一个ASP.NET WebAPI项目.我最近为我的所有数据表创建了EntityFramework实体.但我不想将我的数据层和架构公开给我的用户.如何将我的实体映射到ViewModel(automapper?)提供IQueryable返回类型,以便我的API支持OData?

OData支持查询组合和类似SQL的参数.我想我需要为查询组合部分提供某种双向翻译?这是否意味着自定义LINQ提供程序?我希望它比那更容易.

或者我应该放弃IQueryable/OData?

entity-framework iqueryable odata asp.net-web-api

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

但严重的...... ASP.NET WebAPI实现的示例包括OAuth

我对WCF样本真的不感兴趣.我发现的DotNetOpenAuth实现也不完整假设为WCF.我发现Thinkitecture.IdentityServer.45不是轻量级的,不适合构建我的新WebAPI项目.我甚至发现Oauth2DotNet项目几乎没有真正的信息.

微软已发布了一些 Oauth/OpenID相关项目,但我甚至找不到适合这些项目的文档.

我的项目:创建一个新站点,为使用.NET 4.5和ASP.NET WebAPI的授权移动应用程序提供"REST样式"API服务.由于这些应用程序不一定必须代表用户行事,我们认为"双腿"Oauth是可以接受的,因为我们希望能够在特定应用程序退出时关闭并拒绝访问我们的API.手.

在所有这些中,我花了一周时间尝试使基本实现工作,但甚至无法识别各种令牌类型以及构成令牌本身的内容.这真的不应该那么困难,我发现缺乏有关主题的基本信息非常令人沮丧.是的,这些规格已经公布,但是它们没有被提炼出来并准备好实施.

我希望扩展到与WepAPI的Authenticate属性正确集成的理想解决方案,可能作为ActionFilter/AuthorizationFilter,这样我就可以在尝试授权访问一个或多个优雅的REST-ful API方法之前识别和验证远程应用程序.

哪里是"入门"?

web-services oauth asp.net-web-api

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

使用DbSet <T> .SqlQuery()时,如何使用命名参数?

我非常喜欢使用命名参数而不是基于字符串的参数注入.它对大多数形式的SQL注入都是类型安全且安全的.在旧的ADO.NET中,我会为我的查询创建一个SqlCommand对象和一堆SqlParameters.

var sSQL = "select * from Users where Name = @Name";
var cmd = new SqlCommand(conn, sSQL);
cmd.Parameters.AddWithValue("@Name", "Bob");
cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)

现在,在Entity Framework中,它(在此链接上)显示为已经回归到一个简单的String.Format语句和字符串注入:(简化讨论)

MyRepository.Users.SqlQuery("Select * from Users where Name = {0}", "Bob");
Run Code Online (Sandbox Code Playgroud)

有没有办法在Entity Framework DbSqlQuery类中使用命名参数?

sql entity-framework sql-injection

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

TestClient去哪儿了?

自动生成的测试客户端在ASP.NET Web API中的位置是什么?(MVC 4 beta的一部分)在WCF WebAPI中它位于global.asax中:

var config = new HttpConfiguration() { EnableTestClient = true, EnableHelpPage=true };
RouteTable.Routes.MapServiceRoute<MyService>("api/path", config);
Run Code Online (Sandbox Code Playgroud)

wcf-web-api asp.net-web-api

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

编写实时多人游戏的最佳方式

我不确定实时这个术语是否被滥用,但是这个想法是服务器上的许多玩家都有一个城市每秒产生n个资源.可能有一千个这样的城市.奖励所有玩家城市的最佳方式是什么?

当游戏"活着"时,这样的循环最好的方式是在无限循环中运行吗?(请用这种简单的逻辑忽略明显的错误)

foreach(City c in AllCities){
  if(c.lastTouched < DateTime.Now.AddSeconds(-10)){
    c.resources += (DateTime.Now-c.lastTouched).Seconds * c.resourcesPerSecond;
    c.lastTouched = DateTime.Now;
    c.saveChanges();
  }
}
Run Code Online (Sandbox Code Playgroud)

real-time

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