在.NET ASMX Web服务中获取会话

我的ASP.NET Web应用程序旁边有一个ASMX Web服务。 现在,我需要将用户会话引入Webservice。 为了测试这个我做了这个简单的方法: [WebMethod(EnableSession = true)] public string checkSession() { return HttpContext.Current.Session[“userid”].ToString(); } 所以,首先我登录我的网络应用程序,然后在浏览器中转到我的webservice并在该自动生成的测试页面上单击“checkSession”。 我在3台电脑上测试了这个。 所有这3个都可以正常使用webapp(因此正在创建会话等),其中2个在调用webmethod时返回Session [“userid”]的值,但最后一台计算机返回“对象引用未设置为对象的实例“因为Session是null。 那么,这些计算机之间的区别是什么?为什么我的ASP.NET应用程序可以在所有计算机上获得会话但是webservice不能?

限制c#中文本框十进制输入的最佳方法

如何创建一个文本框,其中只能输入类似12.00或1231231.00或123123的数字 我已经做了很长的事情,我正在寻找最好,最快的方式。 小数分隔符也必须是特定于文化的: Application.CurrentCulture.NumberFormat.NumberDecimalSeparator

如何在C#(.NET)中加载MS Word文档的文本?

如何在不执行此操作的情况下将MS Word文档(.doc和.docx)加载到内存(变量)? wordApp.Documents.Open 我不想打开MS Word,我只想在里面找到那个文字。 你给了我DOCX的答案,但DOC怎么样? 我想要免费和高性能的解决方案 – 不要打开12.000个Word实例来处理所有这些。 🙁 Aspose是商业产品,900美元是我做的太多的方式。

二进制文件到字符串

我正在尝试将二进制文件(例如可执行文件)读入字符串,然后将其写回 FileStream fs = new FileStream(“C:\\tvin.exe”, FileMode.Open); BinaryReader br = new BinaryReader(fs); byte[] bin = br.ReadBytes(Convert.ToInt32(fs.Length)); System.Text.Encoding enc = System.Text.Encoding.ASCII; string myString = enc.GetString(bin); fs.Close(); br.Close(); System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); byte[] rebin = encoding.GetBytes(myString); FileStream fs2 = new FileStream(“C:\\tvout.exe”, FileMode.Create); BinaryWriter bw = new BinaryWriter(fs2); bw.Write(rebin); fs2.Close(); bw.Close(); 这不起作用(结果具有完全相同的字节大小但无法运行) 如果我做bw.Write(bin)结果没问题,但我必须将它保存为字符串

我从GCM服务器获得此响应{“成功”:1}但通知未到达设备

我试图通过推送通知通知设备 我收到了来自GCM服务器的响应 {“multicast_id”:8594338261894783737,”success”:1,”failure”:0,”canonical_ids”:0,”results”:[{“message_id”:”0:1355822022916886%8ae6056ef9fd7ecd”}]} 但仍未收到通知 知识 – > “success”:1 但我认为这里有一些错误 – > “canonical_ids”:0 这是我的代码…… private string SendGCMNotification(string apiKey, string postData, string postDataContentType = “application/json”) { ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback(ValidateServerCertificate); // // MESSAGE CONTENT byte[] byteArray = Encoding.UTF8.GetBytes(postData); // // CREATE REQUEST HttpWebRequest Request = (HttpWebRequest)WebRequest.Create(“https://android.googleapis.com/gcm/send”); Request.Method = “POST”; Request.KeepAlive = false; Request.ContentType = postDataContentType; Request.Headers.Add(HttpRequestHeader.Authorization, string.Format(“key={0}”,apiKey)); […]

在int和string中装箱和拆箱

我在拳击和拆箱方面有点困惑。 根据其定义 Boxing是ValueTypes到引用类型(Object)的隐式转换。 UnBoxing是将引用类型(Object)显式转换为其等效的ValueTypes。 描述这个的最好例子是 int i = 123; object o = i; // boxing 和 o = 123; i = (int)o; // unboxing 但我的问题是int是否是值类型而字符串是引用类型 int i = 123; string s = i.ToString(); 和 s = “123”; i = (int)s; 这是拳击和拆箱的例子吗?

C#/ WPF – 获取ScrollViewer滚动位置?

好的,所以,每个人都知道如何设置ScrollViewer的滚动位置。 整篇论文和博客文章都是关于ScrollViewer.ScrollToVerticalOffset()编写的,这里有几百个关于它的答案。 所以,我输入: myScrollViewer.ScrollToVerticalOffset(280); ……它如此亲切地滚动到那个位置。 问题是, 什么属性现在包含280 ,所以我可以在以后检索它? (提示: myScrollViewer.VerticalOffset和ContentVerticalOffset都是0; myScrollViewer.ScrollInfo只是普通不存在。) 编辑:显然我需要更详细的演示。 private void btnTest_Click(object sender, RoutedEventArgs e) { double scrollTarget = 280; MessageBox.Show(“Target: ” + scrollTarget.ToString()); myScrollViewer.ScrollToVerticalOffset(scrollTarget); MessageBox.Show(“Now: ” + myScrollViewer.VerticalOffset); } 我必须重申,这确实按预期滚动 。 准确地向右移动到我想要的地方。 但是, myScrollViewer.VerticalOffset设置为0。

如何按数字样式对字符串数组进行排序?

我有一个文件名数组,我想按数字样式排序,请给我一个解决方案。 例1: 原始数组: [name99.txt, name98.txt, name100.txt] 排序数组: [name98.txt, name99.txt, name100.txt] (使用字符串排序,排序结果为[name100.txt, name98.txt, name99.txt] ) 例2: 原始数组: [a99.txt, b98.txt, b100.txt] 排序数组: [a99.txt, b98.txt, b100.txt] (使用字符串排序,排序结果为[a99.txt, b100.txt, b99.txt] )

FileSystemWatcher的陷阱

我正在开发一个需要使用FileSystemWatcher类的C#程序,以便在创建新文件时通知它。 作为初始化的一部分,程序扫描目录,以便它可以处理其中已存在的任何文件。 这一切都很好。 但是,在与另一位开发人员的讨论中,我们开始质疑这是否始终有效。 是否存在FileSystemWatcher错过文件创建的条件? 如果是这样,这些条件是什么? 为了处理这种情况,我们只是在初始化过程中运行代码,定期扫描目录,但FileSystemWatcher丢失文件的可能性有多大?

如何通过WCF实现inheritance的Dictionary

我正在尝试实现一个用于WCF的字典。 我的要求是: 实际(私有变量或基类)类型等同于Dictionary Comparer = System.StringComparer.InvariantCultureIgnoreCase 自定义(覆盖/新)添加(键,值)方法(包括validation)。 覆盖ToString() 在客户端和主机上使用相同类型 我试图在WCF主机和客户端项目共享的公共项目中使用此类: [Serializable] public class MyDictionary : Dictionary { public MyDictionary() : base(System.StringComparer.InvariantCultureIgnoreCase) { } public new void Add(string key, object value) { /* blah */ } public override string ToString() { /* blah */ } } [DataContract] [KnownType(typeof(MyDictionary))] [KnownType(typeof(object[]))] [KnownType(typeof(double[]))] [KnownType(typeof(string[]))] [KnownType(typeof(DateTime[]))] public class ResultClass { […]