我注意到JSON对象中元素的顺序不是原始顺序.
那些JSON列表的元素呢?他们的订单是否保持?
我设置了一个git服务器,现在想要从客户端推送我的repo.我使用git push origin master并收到此错误消息:
fatal: protocol error: bad line length character: Unab
Run Code Online (Sandbox Code Playgroud)
我不知道出了什么问题.我不知道"Unab"是什么.我试图调整shell的大小,但它仍然是"Unab".我找不到此错误消息的解决方案.
我用"authorized_keys"和SSH设置服务器.(我可以使用SSH连接到它.)
这似乎是一个git问题?
BTW:服务器设置在Windows 7 VM中
我在VS 2010下创建了一个Web API项目.在我切换到VS 2012后,我总是收到警告:
Web项目"xxx"需要SQL Server Express,而该计算机上未安装此项目.[...]
我不想安装此SQL Server Express.我使用IIS进行调试.如何禁用此依赖项?
我在web.config中也注意到了这一点:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|[...].mdf;Initial Catalog=[...];Integrated Security=True;User Instance=True" providerName="System.Data.SqlClient" />
</connectionStrings>
Run Code Online (Sandbox Code Playgroud)
谁创造了这个?我可以删除吗?
我使用的JsonSerializer是Newtonsoft.
但我想自己命名json-objects.
我试过了这个JsonObject属性
[JsonObject(Description = "MyName", Title = "orThisname")]
Run Code Online (Sandbox Code Playgroud)
JsonArray 也没工作......是否有可能自己命名json-objetcs /数组?
我想实现一个REST API,并且在我的GET请求上需要一个正文.(如下所述:带请求主体的HTTP GET)
是否有http客户端无法发送带有GET请求的正文?Fiddler能够做到这一点,虽然消息框是红色的.
我使用autofac的MVC集成如下:
...
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
Run Code Online (Sandbox Code Playgroud)
但现在我想用新的Web Api RTM重新创建解决方案.我想使用新的AutofacWebApiDependencyResolver类.
但是,如果我使用AutofacWebApiDependencyResolver执行此操作,则会出现此错误:
Autofac.Integration.WebApi.AutofacWebApiDependencyResolver类型似乎不实现Microsoft.Practices.ServiceLocation.IServiceLocator.
我读到我现在必须这样做才能设置解析器:
GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(container);
Run Code Online (Sandbox Code Playgroud)
但是如果我用'='设置它,它就不会被设置.它仍然是DefaultResolver ......
如果我再次使用MVC AutofacDependencyResolver类,它可以工作.
autofac和web api rtm仍然存在问题吗?(目前的集成是RC版)
常见的方法顺序是否有这样的东西?
自从我从Beta/RC版本升级到RTM版本以来,我的Web Api解决方案现在已经执行了一些新方法.(它不是消息处理程序执行的相反顺序)
之前这个APIControllers的方法叫做:
protected override void Initialize(System.Web.Http.Controllers.HttpControllerContext controllerContext)
{
}
Run Code Online (Sandbox Code Playgroud)
在我的AuthorizationFilter的filter方法之前
public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
{
}
Run Code Online (Sandbox Code Playgroud)
在RTM之后,在Initialize()之前调用OnAuthorization.是否有关于ApiController方法的执行顺序和RTM发布后的更改的一些信息?
我在这里实现了异常过滤器:http://www.asp.net/web-api/overview/web-api-routing-and-actions/exception-handling 并在全球注册,如microsoft或stackoverflow-users(如何添加全球ASP.Net Web Api过滤器?)解释.
public static void RegisterWebApiFilters(System.Web.Http.Filters.GlobalFilterCollection filters)
{
//other filters
filters.Add(new MyExceptionFilter());
}
Run Code Online (Sandbox Code Playgroud)
但是如果我抛出异常,我的方法就不会被调用.只有当我将属性[MyExceptionFilter]添加到controller-method时才会调用我的异常处理方法,但我希望通过全局注册过滤器来避免所有方法.
我试图为过滤器设置订单,但这没有效果.
编辑:我注意到,在新的Wep Api RC中,该方法称为"RegisterGlobalFilters",这似乎是MVC过滤器集合.
如果我打电话
GlobalConfiguration.Configuration.Filters.Add(new MyExceptionFilter());
Run Code Online (Sandbox Code Playgroud)
有用.这是Web Api的集合.
看起来我必须为web api构建我自己的"FilterConfig"类...
我将PushStreamContent与我的REST API(ASP.NET Web API)一起使用并且效果很好.HttpClient可以请求一个ressource并在服务器处理完整请求之前获取HTTP响应(服务器仍然写入推送流).
作为HttpClient,你必须做一件小事:使用HttpCompletionOption.ResponseHeadersRead.
现在我的问题:是否有可能以另一种方式?从HttpClient - >通过push-stream将数据上传到web api?
我实现了如下所示,但是web api在客户端关闭流之前不会收到请求.
var asyncStream = new AsyncStream(fs);
PushStreamContent streamContent = new PushStreamContent(asyncStream.WriteToStream);
content.Add(streamContent);
HttpResponseMessage response = await c.SendAsync(new HttpRequestMessage(new HttpMethod("POST"), "http://localhost/...") { Content = content }, HttpCompletionOption.ResponseHeadersRead);
response.EnsureSuccessStatusCode();
Run Code Online (Sandbox Code Playgroud)
AsyncStream是我的代表类:
public async void WriteToStream(Stream outputStream, HttpContent content, TransportContext context)
Run Code Online (Sandbox Code Playgroud)
这对于Push-Stream是必要的.
这有可能吗?HttpClient不会将请求发送到Web api,直到最后一个字节写入流...
我需要做什么?问题出在客户端还是在服务器/ asp.net web api端?
编辑:这是WriteToStream的实现(但我不使用磁盘中的文件,使用内存流'myMemoryStream'(在构造函数中传递):
public void WriteToStream(Stream outputStream, HttpContent content, TransportContext context)
{
try
{
var buffer = new byte[4096];
using (var stream = myMemoryStream)
{
var bytesRead = …Run Code Online (Sandbox Code Playgroud) 我想在我的XNA-Networkgame中使用UDP-Sockets.现在我正在尝试编写可靠的Listenetraread,但是有一些问题.
如果我使用socket.Receive它会等到一个数据包.这对我的Listenetraread很好.我的线程有一个像这样的while循环:
while(Listen == true)
{
socket.Receive(...);
}
Run Code Online (Sandbox Code Playgroud)
但是如果我将Listen-Flag交换为false(如果我想停止收听),它将停留在最后一个.Receive()中.
然后我查看了Methodes .BeginReceive().如果数据包到达,它将调用一个方法.但要接收数据,我必须使用.EndReceive(),这就是我遇到的问题.我想仍然监听数据包,如果数据包到达,不要停止侦听.
所以我仍然使用带有".Receive()"的阻止版本.我可以通过调用:Thread.abort()来强制取消侦听线程,但这并不好.
目前我测试数据是否可用:
while(Listen == true)
{
if(socket.Available > 0)
{
socket.Receive(...);
}
}
Run Code Online (Sandbox Code Playgroud)
但我认为这不是最好的方法...如果在if子句之后不久,另一个线程正在调用socket.Receive(..),它将再次无意中卡住.有没有办法取消.Receive(..)方法?我试图设置超时,但如果.Receive超时,它将抛出异常......
我想要一个简单的udp-listening-thread,我可以优雅地停止.:-)在MSDN中,我没有找到一个侦听器示例,它正在侦听多个数据包.如何处理其他程序员呢?