小编Dar*_*ler的帖子

异步等待执行Windows Phone 8

我是异步的新手,等待编程风格.如何解决以下问题:

我先调用下面的代码.这里的问题是第一行正在等待填充它的需要categoriesvm.Categorieslist,但它没有,但第二行被调用.(我认为这是await的默认行为)

如何确保仅categoriesvm.Categorieslist在第一行中填充第二行时才调用第二行?

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    categoriesvm.GetCategories();                 
    BookCategories.DataContext = from vm in categoriesvm.Categorieslist select vm;
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,当我执行第一行时,它会在Categorieslist我上面访问的列表的下方.

public async void GetCategories()
{            
    Categorieslist = new ObservableCollection<Categories>(await PhoneClient.GetDefaultCategories());          
}
Run Code Online (Sandbox Code Playgroud)

phoneclient下面

public class PhoneClient
{   
    private static readonly HttpClient client;

    public static Uri ServerBaseUri
    {
        get { return new Uri("http://169.254.80.80:30134/api/"); }
    }

    static PhoneClient()
    {        
       client =new HttpClient();
       client.MaxResponseContentBufferSize = 256000;
       client.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"); …
Run Code Online (Sandbox Code Playgroud)

c# async-await c#-5.0 dotnet-httpclient windows-phone-8

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

使用HttpClient发布自定义类型

我有一个自定义的dto类:

public class myObject
{
    public string Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

和使用Web Api的控制器(4.5 .net框架)

[HttpPost]
public IHttpActionResult StripArchiveMailboxPermissions(myObject param)
{
    DoSomething(param);
    return OK();
}
Run Code Online (Sandbox Code Playgroud)

客户端只有4.0 .net框架所以我将无法使用PostAsJsonAsync()方法.将对象从我的客户端传递到服务器的解决方案是什么?

我试过像下面这样的东西:

var response = Client.SendAsync(new HttpRequestMessage<myObject>(objectTest)).Result;
Run Code Online (Sandbox Code Playgroud)

但它抛出了我的异常:

Could not load file or assembly 'Microsoft.Json, Version=2.0.0.0, 
Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. 
The system cannot find the file specified.
Run Code Online (Sandbox Code Playgroud)

是不是可以使用Newtonsoft.Json库?

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

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

StructureMap,Web Api 2和IUserStore错误

我刚刚开始尝试使用Web Api 2和StructureMap,已经安装了StructureMap.MVC4 Nuget包.在我尝试注册用户之前,一切似乎都运行良好.当IHttpControllerActivator的这个实现试图实例化一个控制器时,我得到了这个错误:

public class ServiceActivator : IHttpControllerActivator
    {
        public ServiceActivator(HttpConfiguration configuration) { }

        public IHttpController Create(HttpRequestMessage request
            , HttpControllerDescriptor controllerDescriptor, Type controllerType)
        {
            var controller = ObjectFactory.GetInstance(controllerType) as IHttpController;
            return controller;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

StructureMap Exception Code:  202
No Default Instance defined for PluginFamily Microsoft.AspNet.Identity.IUserStore`1[[Microsoft.AspNet.Identity.EntityFramework.IdentityUser, Microsoft.AspNet.Identity.EntityFramework, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]], Microsoft.AspNet.Identity.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Run Code Online (Sandbox Code Playgroud)

我理解错误是什么,但不完全确定如何解决它.假设StructureMap中的默认扫描程序找不到IUserStore的默认实现是否正确?这是我使用的初始化代码:

ObjectFactory.Initialize(x => x.Scan(scan =>
            {
                scan.AssembliesFromApplicationBaseDirectory();
                scan.WithDefaultConventions();
            }));
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?谢谢.

编辑:我想我可能用这个解决了最初的问题:

x.For<Microsoft.AspNet.Identity.IUserStore<IdentityUser>>()
                    .Use<UserStore<IdentityUser>>();
Run Code Online (Sandbox Code Playgroud)

但现在还有另一个默认实例StructureMap无法解决 - dbcontext.这是我收到的下一条错误消息:

ExceptionMessage=StructureMap Exception Code:  202
No Default Instance defined for …
Run Code Online (Sandbox Code Playgroud)

structuremap dependency-injection basic-authentication asp.net-web-api

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

System.Net.Http.HttpClient 不包含 DownloadData 的定义

我想使用 web api 获取歌词,但它有一个错误“System.Net.Http.HttpClient”不包含“DownloadData”的定义,并且没有扩展方法“DownloadData”接受类型为“System.Net”的第一个参数。可以找到 Http.HttpClient'(您是否缺少 using 指令或程序集引用?)

这是我的代码

internal static class LyricsFetcher
{
    internal static String GetLyrics(String Artist, String Title)
    {
        byte[] responseData;

        string URL;

        URL = "http://api.metrolyrics.com/v1/search/lyrics/?find=" + Artist + "%20" + Title + "&X-API-KEY=1234567890123456789012345678901234567890";

        HttpClient wClient = new HttpClient();
        responseData = wClient.DownloadData(URL); // error
        UTF8Encoding utf8 = new UTF8Encoding();
        String Lyrics = utf8.GetString(responseData,0,responseData.Length);
        return Lyrics;
    }
}
Run Code Online (Sandbox Code Playgroud)

c# dotnet-httpclient

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

.NET httpclient不能一致地保存pdf文件

我使用httpclient来保存URI中的文件.pdf不会一致地保存pdf文件.我解决了这个问题,但我想知道是否有人能够解释为什么会发生这种情况.原始代码是:

using (var pdfStream = File.Create(savePdf))
                       result.Content.CopyToAsync(pdfStream);
Run Code Online (Sandbox Code Playgroud)

有效的代码是:

File.WriteAllText(savePdf, result.Content.ReadAsStringAsync().Result);
Run Code Online (Sandbox Code Playgroud)

.net c# pdf dotnet-httpclient

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

为php脚本创建RESTful URL

我在网络服务器上有一个PHP脚本.目前,该脚本正在被访问http://www.mydomain.com/scriptname.php.有没有办法我可以创建一个用户友好的URL来访问这个脚本,这样的话http://www.mydomain.com/appname,,当这个url被调用它调用PHP脚本?

请帮忙.谢谢

php url

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