小编Ali*_*tad的帖子

什么是WCF RIA服务?

我讨厌MSDN的WCF RIA服务网站.它没有说它是什么,它只说它做了什么.它说它可以实现什么但不说我为什么需要它.

例如:

"开发n层RIA解决方案时的一个常见问题是协调中间层和表示层之间的应用程序逻辑".

嗯,这对我来说意义不大.

"RIA Services通过提供框架组件,工具和服务来解决这个问题,这些组件,工具和服务使RIA客户端可以使用服务器上的应用程序逻辑,而无需手动复制该编程逻辑.您可以创建一个了解业务规则的RIA客户端并且知道每次重新编译解决方案时,客户端都会自动使用最新的中间层逻辑进行更新."

那么从服务器下载DLL?它是描述数据规则的元数据吗?

那是什么?它只是RAD的VS 2010附加组件吗?或者它是WCF之上或其下的技术还是什么?它在哪里生活?有了数据,还有服务器,什么?

如果你能为我总结一下,我很感激.

.net c# wcf ria

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

所有ASP.NET Web API控制器都返回404

我正在尝试使用API​​控制器在ASP.NET MVC 4 Web应用程序内部工作.但是,每个请求都会导致404,我很难过.:/

我从项目模板定义的标准API控制器路由如下:

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
        config.Routes.MapHttpRoute(
            name: "DefaultApi",
            routeTemplate: "api/{controller}/{id}",
            defaults: new { id = RouteParameter.Optional }
        );
    }
}
Run Code Online (Sandbox Code Playgroud)

在Global.asax中调用注册:

protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    // Register API routes
    WebApiConfig.Register(GlobalConfiguration.Configuration);

    FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

    RouteConfig.RegisterRoutes(RouteTable.Routes);
}
Run Code Online (Sandbox Code Playgroud)

我有一个这样的基本API控制器:

namespace Website.Controllers
{
    public class FavoritesController : ApiController
    {       
        // GET api/<controller>
        public IEnumerable<string> Get()
        {
            return new [] { "first", "second" };
        }

        // PUT api/<controller>/5
        public void Put(int id)
        { …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc asp.net-mvc-4 asp.net-web-api

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

在Task.Run中使用CancellationToken超时不起作用

好的,我的问题非常简单.为什么这段代码不会抛出TaskCancelledException

static void Main()
{
    var v = Task.Run(() =>
    {
        Thread.Sleep(1000);
        return 10;
    }, new CancellationTokenSource(500).Token).Result;

    Console.WriteLine(v); // this outputs 10 - instead of throwing error.
    Console.Read();
}
Run Code Online (Sandbox Code Playgroud)

但这一个有效

static void Main()
{
    var v = Task.Run(() =>
    {
        Thread.Sleep(1000);
        return 10;
    }, new CancellationToken(true).Token).Result;

    Console.WriteLine(v); // this one throws
    Console.Read();
}
Run Code Online (Sandbox Code Playgroud)

.net c# task-parallel-library cancellationtokensource cancellation-token

32
推荐指数
4
解决办法
4万
查看次数

在多个表单上指定验证摘要

我在页面上有两个表单如下:

@using (Html.BeginForm())
{
    @Html.ValidationSummary()
    @Html.Label("code", "Confirmation Code")
    @Html.TextBox("code")
    <input type="submit" value="Go" />
}
@using (Html.BeginForm("SendConfirmation", "Auth"))
{
    @Html.ValidationSummary()
    @Html.Label("email", "Email")
    @Html.TextBox("email")
    <input type="submit" value="Resend" />
}
Run Code Online (Sandbox Code Playgroud)

如果SendConfirmation抛出错误,则显示2个验证摘要.如何获得验证摘要以定位自己的?

asp.net-mvc asp.net-mvc-3

28
推荐指数
2
解决办法
8844
查看次数

HttpClient爬网导致内存泄漏

我正在进行WebCrawler 实现,但在ASP.NET Web API的HttpClient中遇到了奇怪的内存泄漏.

所以减少版本在这里:


[更新2]

我发现了问题,并没有HttpClient泄漏.看我的回答.


[更新1]

我添加了dispose没有效果:

    static void Main(string[] args)
    {
        int waiting = 0;
        const int MaxWaiting = 100;
        var httpClient = new HttpClient();
        foreach (var link in File.ReadAllLines("links.txt"))
        {

            while (waiting>=MaxWaiting)
            {
                Thread.Sleep(1000);
                Console.WriteLine("Waiting ...");
            }
            httpClient.GetAsync(link)
                .ContinueWith(t =>
                                  {
                                      try
                                      {
                                          var httpResponseMessage = t.Result;
                                          if (httpResponseMessage.IsSuccessStatusCode)
                                              httpResponseMessage.Content.LoadIntoBufferAsync()
                                                  .ContinueWith(t2=>
                                                                    {
                                                                        if(t2.IsFaulted)
                                                                        {
                                                                            httpResponseMessage.Dispose();
                                                                            Console.ForegroundColor = ConsoleColor.Magenta;
                                                                            Console.WriteLine(t2.Exception);
                                                                        }
                                                                        else
                                                                        {
                                                                            httpResponseMessage.Content.
                                                                                ReadAsStringAsync()
                                                                                .ContinueWith(t3 =>
                                                                                {
                                                                                    Interlocked.Decrement(ref waiting);

                                                                                    try
                                                                                    {
                                                                                        Console.ForegroundColor = ConsoleColor.White;

                                                                                        Console.WriteLine(httpResponseMessage.RequestMessage.RequestUri); …
Run Code Online (Sandbox Code Playgroud)

c# memory-leaks asp.net-web-api dotnet-httpclient

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

为什么(以及如何)ASP.NET Cache存储在非托管内存中?

好的,你所有的ASP.NET专家:我用反射器来研究ASP.NET Cache实现(它位​​于HttpRuntime.CacheHttpContext.Current.Cache)使用Hashtable内部来保持缓存.

但是,数据存储在非托管内存中.这很奇怪,因为我无法看到任何数据存储在非托管内存中.但是,编写一个非常简单的Web应用程序,将一大块字节数组插入缓存中,我们可以看到:

在此输入图像描述

  • 私人字节:460MB
  • 所有堆中的字节数:150MB

=>

托管内存:150 MB

非托管内存:310 MB

所以基本上我多次调用应用程序(每次增加1000x请求,每个将64KB空缓冲区byte []放入缓存).因此,增长最多的是私有字节(总内存)而不是所有堆中字节(托管内存).但是我期望托管内存与总内存一致增长,因为我使用Hashtable将对象添加到托管堆.

你能解释一下这种行为吗?


UPDATE

正如Simon所说,所有堆中的字节值仅在垃圾收集后更改 - 我更改了代码以引发垃圾收集并更新计数器.Gen 2堆内存的增加与添加的内存量完全相同.但是,非托管内存仍然高得多.在此示例中,堆2仅为96MB,而总内存为231 MB.

在此输入图像描述

memory asp.net heap caching unmanaged-memory

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

任务链(等待上一个任务完成)

var tasks = new List<Task>();

foreach (var guid in guids)
{
    var task = new Task( ...);
    tasks.Add(task);
}

foreach (var task in tasks)
{
    task.Start();
    Task.WaitAll(task);
}
Run Code Online (Sandbox Code Playgroud)

这是UI线程的运行.我需要一个接一个地执行任务变量中的所有任务.问题是如果我调用Task.WaitAll(任务),UI冻结.如何在不冻结UI的情况下执行以下逻辑?

.net c# task task-parallel-library

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

SQL'不是'比''更''昂贵'吗?

除了可能在表中的行数之外,这些示例查询中的一个会比另一个更昂贵吗?

SELECT * FROM dbo.Accounts WHERE AccountID IN (4,6,7,9,10) 

SELECT * FROM dbo.Accounts WHERE AccountID NOT IN (4,6,7,9,10)
Run Code Online (Sandbox Code Playgroud)

sql sql-server performance

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

清空HTTP POST请求或GET请求以通过HTTP API生成随机值

在我的HTTP API中,其中一个端点应返回一个随机生成的值,该值将与端点的经过身份验证的调用方关联.目前,我有以下结构:

GET http://example.com/random-ticket HTTP/1.1
Authorization: Basic base64-encoded-basic-auth-value
Accept: application/json
Host: example.com

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Type: application/json; charset=utf-8
Date: Thu, 03 Oct 2013 07:25:56 GMT
Content-Length: 59

{"user-ticket":"Pfa42634e-1a2e-4a7d-84b9-2d5c46a8dd81"}
Run Code Online (Sandbox Code Playgroud)

发出GET请求以检索随机值.但是,HTTP GET调用应该是幂等的,我的上述实现不符合该规则.另一方面,我不确定是否可以使用空消息体发出HTTP POST请求.

HTTP书执行此类操作的正确方法是什么?

rest http web asp.net-web-api

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

无法检查hadoop上的节点[连接被拒绝]

如果我输入 http://localhost:50070http://localhost:9000查看节点,我的浏览器没有显示我认为它无法连接到服务器.我用这个命令测试了我的hadoop:

hadoop jar hadoop-*test*.jar TestDFSIO -write -nrFiles 10 -fileSize 1000
Run Code Online (Sandbox Code Playgroud)

但也没有工作,它试图连接到服务器,这是输出:

12/06/06 17:25:24 INFO mapred.FileInputFormat: nrFiles = 10
12/06/06 17:25:24 INFO mapred.FileInputFormat: fileSize (MB) = 1000
12/06/06 17:25:24 INFO mapred.FileInputFormat: bufferSize = 1000000
12/06/06 17:25:25 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 0 time(s).
12/06/06 17:25:26 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 1 time(s).
12/06/06 17:25:27 INFO ipc.Client: Retrying connect to server: localhost/127.0.0.1:9000. Already tried 2 time(s).
12/06/06 17:25:28 INFO ipc.Client: …
Run Code Online (Sandbox Code Playgroud)

hadoop

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