Tag: 主机

System.Net.WebRequest不尊重主机文件

有没有办法让System.Net.WebRequest或System.Net.WebClient尊重hosts或lmhosts文件? 例如:在我的hosts文件中,我有: 10.0.0.1 www.bing.com 当我尝试在浏览器(IE和FF)中加载Bing时,无法按预期加载。 Dns.GetHostAddresses(“www.bing.com”)[0]; // 10.0.0.1 WebRequest.Create(“http://10.0.0.1”).GetResponse(); // throws exception (expected) WebRequest.Create(“http://www.bing.com/”).GetResponse(); // unexpectedly succeeds 同理: WebClient wc = new WebClient(); wc.DownloadString(“http://www.bing.com”); //succeeds 为什么System.Net.Dns尊重hosts文件,但System.Net.WebRequest会忽略它? 我需要更改什么才能使WebRequest尊重hosts文件? 附加信息: 如果我禁用IPv6并将我的IPv4 DNS服务器设置为127.0.0.1,则上述代码按预期工作(失败)。 但是,如果我将正常的DNS服务器添加为备用服务器,则会恢复意外行为。 我在3个Win7和2个Vista盒子上重现了这个。 唯一不变的是我公司的网络。 我正在使用.NET 3.5 SP1和VS2008 编辑 根据@Richard Beier的建议,我尝试了System.Net跟踪。 跟踪ON WebRequest失败了。 但是,只要我将跟踪关闭 ,行为就会恢复到意外的成功。 我在调试和发布模式下都在同一台机器上重现了这一点。 编辑2 事实certificate这是公司代理给我们带来的问题。 我们的解决方案是我们的测试机器的自定义代理配置脚本,其中“bing.com”指向DIRECT而不是默认代理。

Request.Url.Host是否包含子域?

例如,对于mail.google.com,它会返回google.com或mail.google.com吗? 我自己实际上无法测试它

异步WCF自托管服务

我的目标是实现异步自托管WCF服务,该服务将在单个线程中运行所有请求并充分利用新的C#5异步function。 我的服务器将是一个Console应用程序,我将在其中设置SingleThreadSynchronizationContext ,如此SingleThreadSynchronizationContext指定,创建并打开ServiceHost ,然后运行SynchronizationContext ,以便在同一个线程中处理所有WCF请求。 问题是,尽管服务器能够成功处理同一线程中的所有请求,但异步操作阻止了执行并被序列化,而不是隔行扫描。 我准备了一个简化的样本来重现这个问题。 这是我的服务合同(服务器和客户端相同): [ServiceContract] public interface IMessageService { [OperationContract] Task Post(String message); } 服务实现如下(它有点简化,但最终实现可以访问数据库,甚至以异步方式调用其他服务): public class MessageService : IMessageService { public async Task Post(string message) { Console.WriteLine(string.Format(“[Thread {0} start] {1}”, Thread.CurrentThread.ManagedThreadId, message)); await Task.Delay(5000); Console.WriteLine(string.Format(“[Thread {0} end] {1}”, Thread.CurrentThread.ManagedThreadId, message)); return true; } } 该服务托管在控制台应用程序中: static void Main(string[] args) { […]

从我托管的Asp.Net网站获取IIS的运行会话数

我在IIS 6.0中托管Asp.Net网站 我们必须在web.config中重置会话超时 我的客户希望我只有在没有会话正在运行时才重置它(没有人使用该站点)。 我们没有使用Membership,SessionState设置为InProc 我如何知道是否有人使用该网站或任何会话正在运行。 我无法在托管网站中的源代码或除web.config之外的任何其他文件中进行更改。

如何在WCF服务和主机应用程序之间进行通信?

我通过本教程创建了一个WCF服务。 这很好用,没问题。 现在我在托管应用程序中托管服务。 但与此同时,我希望将客户端的输入用于主机应用程序中的服务。 我不需要客户端和服务之间的双工通信。 我只需要服务和主机通信之间的通信。 处理这个问题的最佳方法是什么?