我正在使用Windows 2008R2下IIS 7.5上托管的Transport Security开发WCF服务.我有一个在IIS 7.5中生成的证书,该证书存储在Local文件夹中.
当我使用BasicHttpBinding或WSHttpBinding与传输安全 - 一切正常.但当我将其更改为NetTcp时,我得到一个例外:
CryptographicException 'Keyset does not exist'.
Run Code Online (Sandbox Code Playgroud)
经过一些谷歌搜索后,我发现问题可能是因为我的NETSERVICE IIS帐户没有预先设置我的证书的私钥.
解决方案是通过右键单击我的证书并选择"MANAGE PRIVATE KEYS"选项来设置MMC中的访问权限.但是在选择菜单中没有这样的选项!证书是在管理员帐户下创建的,我打开它 - 它说它有私钥.我做错了什么?
我有一个带有多个参数的web方法.Web方法仅依赖于2个字段,其余字段都是可选的.
[OperationContract]
public string WarehouseContactInformation(int WAID (Required), string CN (Required), string CT (Optional), string CC (Optional), string CFN (Optional), string CD (Optional), string CE (Optional),string CW (Optional))
Run Code Online (Sandbox Code Playgroud)
如何将这些参数声明为可选参数,以便在调用Web方法时,我只需要通过我有值的字段,例如:
WarehouseContactInformation(1,'Bill','00012311')
WarehouseContactInformation(1,'Bill','00012311','12415415','123525')
Run Code Online (Sandbox Code Playgroud) 我在WCF服务中遇到了一个非常奇怪的错误,当我使用NetTcpBinding时,它似乎以某种方式在套接字级别创建了死锁或线程饥饿.我有一个非常简单的自托管服务:
class Program
{
static void Main(string[] args)
{
using (ServiceHost serviceHost = new ServiceHost(typeof(TestService)))
{
serviceHost.Open();
Console.WriteLine("Press <ENTER> to terminate service.");
Console.ReadLine();
serviceHost.Close();
}
Uri baseAddress = new Uri("net.tcp://localhost:8014/TestService.svc");
}
}
[ServiceContract]
public interface ITestService
{
[OperationContract]
string GetData(string data);
}
public class TestService: ITestService
{
public string GetData(string data)
{
Console.WriteLine(data);
Thread.Sleep(5000);
return "Ok";
}
}
Run Code Online (Sandbox Code Playgroud)
配置部分:
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="basicHttpBinding" closeTimeout="00:02:00" openTimeout="00:02:00"
receiveTimeout="00:02:00" sendTimeout="00:02:00" maxBufferSize="2000000000"
maxReceivedMessageSize="2000000000" />
</basicHttpBinding>
<netTcpBinding>
<binding name="netTcpBinding" closeTimeout="00:02:00" openTimeout="00:02:00"
receiveTimeout="00:02:00" sendTimeout="00:02:00" listenBacklog="2000" …Run Code Online (Sandbox Code Playgroud) 我有一个Xml,我必须得到元素名称
<Data>
<Test key="G" modifier="control" />
<Test1 key="E" modifier="control" />
<Test3 />
<Test4 />
</Data>
XDocument xd = XDocument.Load("..\\Cmd.xml");
IEnumerable<XElement> xeCmdData = Cmd.XPathSelectElements(".//Data");
foreach (XElement xeData in xeCmdData)
{
// here i am getting the whole xml how to get Element name ...
// Like <Data>
// <Test key="G" modifier="control" />
// <Test1 key="E" modifier="control" />
// <Test3 />
// <Test4 />
// </Data>
}
Run Code Online (Sandbox Code Playgroud)
如何获取元素名称?
我试图理解以下LINQ查询的自定义排序逻辑:
var random = new Random();
var cnt = Enumerable.Range(0, 10).OrderBy(i => random.NextDouble()).ToList();
Run Code Online (Sandbox Code Playgroud)
这种比较的内在逻辑是什么?我如何比较random.NextDouble()内部使结果列表总是不同?
我有一个方法:
public void MyMethod(string myParam1,string myParam2="")
{
myParam2 = (myParam2 == "")?myParam1:myParam2;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法做这样的事情:
public void MyMethod(string myParam1,string myParam2 = (myParam2 == "")?myParam1:myParam2)
Run Code Online (Sandbox Code Playgroud) 我在单元格中有一个| b | c | d | ..值.如何通过在分隔符的帮助下拆分b来计算所有调用中b的总出现次数
我有一个以下LinqToXml查询:
var linqDoc = XDocument.Parse(xml);
var result = linqDoc.Descendants()
.GroupBy(elem => elem.Name)
.Select(group => new
{
TagName = group.Key.ToString(),
Values = group.Attributes("Id")
.Select(attr => attr.Value).ToList()
});
Run Code Online (Sandbox Code Playgroud)
有可能以某种方式使我的匿名类型的字段成为变量值,以便它可以是(不工作):
var linqDoc = XDocument.Parse(xml);
var result = linqDoc.Descendants()
.GroupBy(elem => elem.Name)
.Select(group => new
{
group.Key.ToString() = group.Attributes("Id")
.Select(attr => attr.Value).ToList()
});
Run Code Online (Sandbox Code Playgroud) 我有一个类有一些方法,我在代码中使用.他们的目标是生成一个对象并将其返回以供进一步使用.我可以用两种方式实现它.第一种方法 - 将其设为静态,如下所示:
public static class Builder
{
public static MyObject BuildMyObject(Settings myEnumSetting, int someParam)
{
//Building object
return MyObject;
}
//Other methods
}
Run Code Online (Sandbox Code Playgroud)
其他方式 - 是使它像这样的实例:
public class Builder
{
public MyObject BuildMyObject(Settings myEnumSetting, int someParam)
{
//Building object
return MyObject;
}
//Other methods
}
Run Code Online (Sandbox Code Playgroud)
在第一种方式可以创建我的对象,如下所示:
MyObject obj = Builder.BuildMyObject(Settings.Worker,20);
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,我可以像这样使用它:
MyObject obj = new Builder().BuildMyObject(Settings.Worker,20);
Run Code Online (Sandbox Code Playgroud)
以下哪种方法对使用效率更高?
System.String在ILSpyI中观察类找到了以下索引器:
public extern char this[int index]
{
[__DynamicallyInvokable, SecuritySafeCritical]
[MethodImpl(MethodImplOptions.InternalCall)]
get;
}
Run Code Online (Sandbox Code Playgroud)
这个索引器通过索引从字符串中取出char并限制它的setter(我认为它是不可变的).但这个吸气剂是如何起作用的?它从哪里取出炭?调试器如何自动实现这个索引器getter?
我的目标是列表和枚举之间的一点混合.
我创建列表时的示例:
List<string> toto= new List<string>;
toto.add("test1");
toto.add("test2");
Run Code Online (Sandbox Code Playgroud)
==>但是不能像这样调用"test1":toto.test1
有了enum,它可能是这样的:
public enum toto{
test,test2
}
Run Code Online (Sandbox Code Playgroud)
但就字符串而言,创建动态枚举是不可能的
我的问题的想法?
谢谢您帮忙
你能解释一下,LINQ中的VAR是什么,为什么我们在所有LINQ查询中都使用它.
var result = from sta in db.uploaddetails
where sta.Keyword==issue.uploaddetails.Keyword
select sta;
Run Code Online (Sandbox Code Playgroud)
那里的VAR是什么?为什么LINQ查询与SQL查询完全不同.
c# ×10
linq ×3
wcf ×3
asp.net ×1
linq-to-xml ×1
net.tcp ×1
sockets ×1
sql ×1
sql-server ×1
wcf-security ×1
xelement ×1