小编Bap*_*ptX的帖子

如何保持回车解析XML

我在互联网上看如何保持从XML数据回车,但我找不到答案,所以我在这里:)

目标是在文件中写入XML数据的内容.因此,如果节点的值包含一些"\ r \n"数据,则软件需要在文件中写入它们以创建新行,但它不会写入,即使有空格:保留.

这是我的测试类:

XElement xRootNode = new XElement("DOCS");
XElement xData = null;

//XNamespace ns = XNamespace.Xml;
//XAttribute spacePreserve = new XAttribute(ns+"space", "preserve");
//xRootNode.Add(spacePreserve);

xData = new XElement("DOC");
xData.Add(new XAttribute("FILENAME", "c:\\titi\\prout.txt"));
xData.Add(new XAttribute("MODE", "APPEND"));
xData.Add("Hi my name is Baptiste\r\nI'm a lazy boy");

xRootNode.Add(xData);

bool result = Tools.writeToFile(xRootNode.ToString());
Run Code Online (Sandbox Code Playgroud)

这是我的流程类:

try
{
    XElement xRootNode = XElement.Parse(xmlInputFiles);
    String filename = xRootNode.Element(xNodeDoc).Attribute(xAttributeFilename).Value.ToString();
    Boolean mode = false;
    try
    {
         mode = xRootNode.Element(xNodeDoc).Attribute(xWriteMode).Value.ToString().ToUpper().Equals(xWriteModeAppend);
    }
    catch (Exception e)
    {
         mode = false;
    }

    String value = …
Run Code Online (Sandbox Code Playgroud)

c# xml linq linq-to-xml c#-4.0

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

SqlConnection线程安全吗?

我有一个Log类将日志放在Windows日志和SQL表中.为了优化我的代码,我想只使用一个SqlConnection.

在MSDN中,它说:public static此类型的任何(在Visual Basic中共享)成员都是线程安全的.任何实例成员都不保证是线程安全的.

我的问题是:

private static readonly SqlConnection conn = new SqlConnection(ConfigParameters.Instance.UIDConnection);
Run Code Online (Sandbox Code Playgroud)

它是线程安全的吗?如果是的话,何时使用Open()Close()

如果没有,怎么使用得当SqlConnection

这是我的完整类代码:

private static readonly SqlConnection conn = new SqlConnection(ConfigParameters.Instance.UIDConnection);

public static long WriteLog(string sSource, string sMessage, int iErrorCode, EventLogEntryType xErrorType)
{
    // Windows Logs
    if (ConfigParameters.Instance.WindowsLog)
        EventLog.WriteEntry(sSource, sMessage, xErrorType, iErrorCode);

    // SQL Logs
    // TODO

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c# wcf multithreading sqlconnection thread-safety

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

枚举值不在soap请求中传输

我有一个webservice,在我的项目中通过webreference引用.

以下是wsdl文件中枚举的说明:

<xs:simpleType name="photoIdType">
    <xs:restriction base="xs:string">
       <xs:enumeration value="DRV"/>
       <!-- drivers license -->
       <xs:enumeration value="PAS"/>
       <!-- passport -->
       <xs:enumeration value="STA"/>
       <!-- state ID -->
       <xs:enumeration value="GOV"/>
       <!-- government id -->
       <xs:enumeration value="ALN"/>
       <!-- alien id -->
    </xs:restriction>
</xs:simpleType>
Run Code Online (Sandbox Code Playgroud)

当我必须给出这个变量的值时,这是我的方式:

    switch (xRootNode.Element(TagsXML.MG_T_SENDER_PHOTO_ID_TYPE).Value)
     {
     case "ALN":
         sendRequest.senderPhotoIdType = photoIdType.ALN;
         break;
     case "DRV":
         sendRequest.senderPhotoIdType = photoIdType.DRV;
         break;
     case "GOV":
         sendRequest.senderPhotoIdType = photoIdType.GOV;
         break;
     case "PAS":
         sendRequest.senderPhotoIdType = photoIdType.PAS;
         break;
     case "STA":
         sendRequest.senderPhotoIdType = photoIdType.STA;
         break;
   }
Run Code Online (Sandbox Code Playgroud)

就在我调用webservice的方法之前,我检查了我的枚举的值.价值在这里,很好.

但是当我用Fiddler(http数据包分析器)检查Soap请求发送到webservice时,photoIdType节点不在!

你知道这是Visual Studio的一个已知问题吗?你知道为什么没有发送枚举值吗?

如果需要,我可以提供更多信息.

enums soap web-services visual-studio-2010

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

简单的一个线程套接字 - TCP服务器

首先,我不知道Stackoverflow是否是发布此类消息的最佳网站,但我不知道这样的其他网站.

为了在C#中正确理解tcp编程,我决定从头开始做所有可能的方法.这是我想知道的(不是正确的顺序: - 简单的一个线程套接字服务器(本文) - 简单的多线程套接字服务器(我不知道如何,导致线程复杂) - 简单的线程套接字服务器(放另一个线程中的客户端管理) - 多线程套接字服务器 - 使用tcpListener - 使用async/Await - 使用任务最终目标是知道如何做最好的tcp服务器,而不只是复制/粘贴来的一些部分,但要正确理解所有的东西.

所以,这是我的第一部分:单线程tcp服务器.

有我的代码,但我不认为有人会纠正一些东西,因为它是MSDN的一个副本:http://msdn.microsoft.com/en-us/library/6y0e13d3( v = vs.110).aspx

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Sockets;
using System.Text;

namespace SimpleOneThreadSocket
{
    public class ServerSocket
    {
        private int _iPport = -1;
        private static int BUFFER_SIZE = 1024;
        private Socket _listener = null;

        public ServerSocket(int iPort)
        {            
            // Create a TCP/IP socket.
            this._listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            // Save the port
            this._iPport = …
Run Code Online (Sandbox Code Playgroud)

c# tcp tcpserver

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