小编M.B*_*ock的帖子

从HttpWebResponse中检索多个"Set-Cookie"标头

我正在尝试以编程方式登录到Yahoo开发人员API.我遇到了一个绊脚石,我无法访问HttpWebResponse的所有"Set-Cookie"标题.

Fiddler在响应的标题中显示以下cookie:

Set-Cookie: B=733jjvp7f5g8f&b=4&d=1pFN8bVpYFYaPUme88.fc6ZzTSI-&s=kc&i=.1p3Ei3yvwqZjo0gcg7D; expires=Sun, 22-Dec-2013 05:33:04 GMT; path=/; domain=.yahoo.com
Set-Cookie: F=a=GYsABKAMvTZoTcNAPKUXrclX_Hb77EA7I_62nONz8QeEwNevHwqJ_NyizED88uhv9aMx.9o-&b=3tN5; expires=Sun, 22-Dec-2013 05:33:04 GMT; path=/; domain=.yahoo.com
Set-Cookie: Y=v=1&n=0v251rt3ifppb&l=0kii84if0h70ma/o&p=m2fvvau012000000&iz=1111&r=if&lg=en-AU&intl=au&np=1; path=/; domain=.yahoo.com
Set-Cookie: PH=fn=jW23i4lnq1UpiP.lsuU-&l=en-AU; expires=Sun, 22-Dec-2013 05:33:04 GMT; path=/; domain=.yahoo.com
Set-Cookie: T=z=QEs8OBQYTBPBEZq31nTCqv1MzNPBjUwTjcwMDZOTjY-&a=YAE&sk=DAAtoxgrYmWIMk&ks=EAA3Ha0H7qyCT8P3cI9NWJrIA--~E&d=c2wBTkRRNEFUSTNPVEEzTnpFNU9URS0BYQFZQUUBZwFCRFZQTkRSSjJQRVRDTEdFT0xCQ1hER0VVUQFvawFaVzAtAXRpcAF2MkNUVUEBenoBUUVzOE9CQTdF; path=/; domain=.yahoo.com
Set-Cookie: SSL=v=1&s=kTc532PQYAe1iT.23Q55E50ZdoOAdEK_fshc3g_YZ3SxszcbuHkmpJUAQ7RT67nDNA0nXyX68um90ZuS9RQztQ--&kv=0; path=/; domain=.yahoo.com; secure; httponly
Run Code Online (Sandbox Code Playgroud)

但是,我无法通过.NET访问"Set-Cookie"的第一个实例以外的任何内容:

// Make the web request:
var userAuthWebRequest = WebRequest.Create(uri) as HttpWebRequest;
var response = userAuthWebRequest.GetResponse() as HttpWebResponse;

// Dump the headers to debug:
Debug.WriteLine(string.Format("Set-Cookie: {0}", response.Headers.Get("Set-Cookie")));
Run Code Online (Sandbox Code Playgroud)

我的调试输出返回:

Set-Cookie: B=733jjvp7f5g8f&b=3&s=b1; expires=Sun, 22-Dec-2013 05:33:03 GMT; path=/; domain=.yahoo.com
Run Code Online (Sandbox Code Playgroud)

有趣的是,如果我向Headers.GetValues发出类似的请求,它实际上会返回"Set-Cookie"标题的两个实例,这些实例似乎已连接在一起:

foreach (var headerName …
Run Code Online (Sandbox Code Playgroud)

.net c#

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

IoC优于Factory Singleton的好处

关于单身人士的使用,似乎有一种耻辱.我从来没有亲自接受它,但为了开放的思想,我试图尝试将IoC概念作为替代方案,因为我坦率地厌倦了我的日常工作,并希望尝试不同的东西.如果我对IoC概念的解释不正确或误导,请原谅我.

下面是这样的情况:我正在HttpListenerWindows服务中构建一个基于简单的Web服务器,它利用插件模型来确定如何根据请求的URL处理请求(就像其他人询问的那样HttpListener).我发现插件的方法是查询配置目录以查找用a装饰的程序集HttpModuleAssemblyAttribute.这些程序集可以包含0个或更多IHttpModule子项,这些子项另外HttpModuleAttribute用于指定模块的名称,版本,人类可读描述和各种其他信息.就像是:

[HttpModule(/*Some property values that matter */)]
public class SimpleHttpModule : IHttpModule
{
    public void Execute(HttpListenerContext context)
    {
        /* Do Something Special */
    }
}
Run Code Online (Sandbox Code Playgroud)

HttpModule发现a时,我通常会将它添加到一个Dictionary<string, Type>对象中,该对象的唯一目的是跟踪我们所知道的模块.这本词典通常会出现在我的各种单身人士中,这种单身人士具有ACE风格的单身人士(我从C++那里学习单身人士的遗产).

现在我想要实现的是使用(我的理解)一般IoC概念类似的东西.基本上我所拥有的是一个AppService集合,IAppService其定义为:

public interface IAppService : IDisposable
{
    void Initialize();
}
Run Code Online (Sandbox Code Playgroud)

我的插件AppService看起来像:

[AppService("Plugins")]
internal class PluginAppService : IAppService, IDictionary<string, Type>
{
    /* Common IDictionary Implementation consisting of something like: */
    internal …
Run Code Online (Sandbox Code Playgroud)

c# singleton inversion-of-control

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

在当前用户下运行流程

VS中有"安装项目".安装过程中,我启动另一个过程

System.Diagnostics.Process process = new System.Diagnostics.Process();
//fill StartInfo and run call Start()
process.Start();
Run Code Online (Sandbox Code Playgroud)

如果我在Windows 7下运行安装程序并安装"Everyone",则在SYSTEM下启动进程.如果我安装"Just for me",请在当前用户下启动流程.如何始终在当前用户下启动流程?

c# setup-project

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

获取CLR ID

有没有在运行时为当前应用程序获取CLR ID的位置?我正在使用性能监视器监视我的系统,该实例使用的名称是:

ApplicationName.exe_p4952_r15_ad1
Run Code Online (Sandbox Code Playgroud)

我可以通过编程方式获取所有其他参数,但不能获取r15执行代码的公共语言运行库(实例)的运行时ID.我注意到它总是15,但最好动态地得到它以避免并发症.

c# clr winforms

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

Dispose由WCF ChannelFactory创建的频道

我正在寻找一种干净的方法ChannelFactory为我创建通道,并能够在使用后处理它们.
这就是我得到的:

public class ClientFactory : IClientFactory
{
    private const string endpointName = "IMyService";
    private readonly ChannelFactory<IMyService> _factory;

    public ClientFactory()
    {
        _factory = new ChannelFactory<IMyService>(endpointName);
    }

    public Client<IMyService> GetClient()
    {       
        IMyService channel = _factory.CreateChannel();
        return new Client<IMyService>(channel);
    }
}

public class Client<T> : IDisposable
{
    public T Channel { get; private set; }

    public Client(T channel)
    {
        if (channel == null)
            throw new ArgumentException("channel");

        Channel = channel;
    }

    public void …
Run Code Online (Sandbox Code Playgroud)

.net c# wcf channelfactory

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

'dup'后实例变量仍然引用

我有一个类的对象,我想用它复制它dup.其中一个实例变量是一个数组,它似乎引用了它.我以为dup实际上创造了一个DUPLICATE.

这是我的IRB会议:

irb(main):094:0> class G
irb(main):095:1> attr_accessor :iv
irb(main):096:1> def initialize
irb(main):097:2> @iv = [1,2,3]
irb(main):098:2> end
irb(main):099:1> end
=> nil

irb(main):100:0> a=G.new
=> #<G:0x27331f8 @iv=[1, 2, 3]>

irb(main):101:0> b=a.dup
=> #<G:0x20e4730 @iv=[1, 2, 3]>

irb(main):103:0> b.iv<<4
=> [1, 2, 3, 4]
irb(main):104:0> a
=> #<G:0x27331f8 @iv=[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我希望a不会改变,因为dup创建一个全新的变量,而不是引用.

另请注意,如果[1,2,3]要用标量替换G::initialize,dup则不会引用它.

ruby dup

7
推荐指数
2
解决办法
1836
查看次数

为什么我的ITexthandler不工作?我正在尝试将XML解析为ITextSharp doc

我正在使用Visual Developer 2010,MVC 3,c#.我正在尝试将XML解析为这样的iTextSharp文档:

        ITextHandler textHandler = new ITextHandler(doc);
        textHandler.Parse(xmldoc);
Run Code Online (Sandbox Code Playgroud)

错误消息显示ITextHandler不在此上下文中.我怎样才能做到这一点?或者是否有另一个构造函数可以执行相同的操作?

这是我的using语句列表:

using System;
using System.IO;
using System.Text;
using System.Web;
using System.Web.Mvc;
using System.Xml;
using iTextSharp.text;
using iTextSharp.text.xml;
using iTextSharp.text.pdf;
Run Code Online (Sandbox Code Playgroud)

除了ITextHandler行之外,其他所有内容似乎都能正确编译.请帮忙.

c# itextsharp asp.net-mvc-3

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

我可以在WinRT Metro Style Applications for Windows 8上使用我现有的.Net 4.0类库

我刚刚开始深入研究Metro Style应用程序开发,我意识到当我查看应用程序的属性时,没有针对性的框架.

那么,我可以在WinRT Metro Stype Applications for Windows 8上使用我现有的.Net 4.0类库(或以前的类库)吗?

例如,我想得到Autofac并使用它,但我不确定它是否合适.

编辑

我认为它实际上是针对.Net Framework Core 4.5.

.net c# windows-8 windows-runtime

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

取消异步检索URL的任务

我在找到如何在C#中取消此任务时遇到了一些问题.我对处理线程没有很强的理解,我尝试使用谷歌搜索一些简单的代码示例来帮助我,但我真的没有在哪里.这是我正在处理的一段代码:

var tasks = urls.Select(url => Task.Factory.StartNew(
state =>
{
    using (var client = new WebClient())
    {

        lock (this)
        {

        // code to download stuff from URL

        }

    }
}, url)).ToArray();

    try
    {
       Task.WaitAll(tasks);
    }
    catch (Exception e)
    {
      textBox2.AppendText("Error: " + e.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

其中"urls"是一个URL数组.是否有一种简单的方法可以使我在单击程序中的按钮时完全停止下载URL?另外,我粘贴的代码片段在backgroundWorker1调用的函数中,我想这可能会使事情变得复杂一些.(我有一个backgroundWorker的原因是UI在下载URL时没有锁定.)

如果这有点令人困惑,这里是我试图用我的代码实现的概述:

  • 我有一系列的URL,我想异步下载每个URL而不会锁定UI.
  • 我最好希望用户通过单击按钮来停止程序下载URL,几乎取消了该线程.
  • 当用户再次单击该按钮时,程序将从该阵列再次下载URL.

提前致谢.

c# asynchronous task multitasking

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

Mimic File.Move如果目的地已经存在

来自以下文件File.Move:

请注意,如果您尝试通过将同名文件移动到该目录来替换文件,则会出现IOException.您不能使用Move方法覆盖现有文件.

简而言之,你不能覆盖Move,所以为了方便覆盖Move,我通过做一个File.Copy后面的模仿行为File.Delete.就像是:

if (File.Exists(dstFileName))
{
    // System.IO.File.Move cannot be used to overwrite existing files, so we're going
    // to simulate that behavior with a Copy & Delete.
    File.Copy(procContext.FileName, dstFileName);
    File.Delete(procContext.FileName);
}
else
    File.Move(procContext.FileName, dstFileName);
Run Code Online (Sandbox Code Playgroud)

我的问题是:是否有任何我需要防范的情况可能会导致源文件被删除而不首先被成功复制?

我从阅读文档中得到的理解是,因为File.Copy它不会返回任何在它不成功的情况下应该抛出异常的东西.有没有人遇到过任何不真实的情况?

c# copy file

7
推荐指数
2
解决办法
9113
查看次数