我读过邮箱不可用.服务器响应为:5.7.1无法转发abc@xyz.com和所有答案.我通过添加了我的IP地址
IIS - >默认SMTP虚拟服务器 - >属性 - >访问 - >中继限制只是添加或排除>您关心的IP,应解决问题.
但它仍然给我上面的错误.我究竟做错了什么?
我正在使用Windows Sever 2003 R2和IIS6.
如果有人能回答以下问题,我将很高兴
我正在进行一项性能测试,该测试涉及几个客户,每个客户尽可能快地轰炸服务器150个请求.
服务器由3个WCF服务构成,一个通过httpbinding向外部打开,它通过net.pipe(IPC)与另外两个服务进行通信.其中一项服务负责数据库连接(SQL server 2008 R2).
此DB连接服务使用以下连接字符串增强:
Min Pool Size=20; Max Pool Size=1000; Connection Timeout=20;
Run Code Online (Sandbox Code Playgroud)
并且受WCF限制(与所有其他WCF服务一样).
我注意到当我激活1个客户端时可能需要3秒钟,但是当我激活3个客户端时,它可能需要8到9个或更多.
我检查了SQL服务器分析器,看看有多少并发进程使用,我看到只使用了大约8个进程.
所以我意识到在服务器中的某个地方请求排队而不是同时处理.
为了找到它的底部,我使用了一个性能分析器(确切地说是ANTS),它向我展示了大约70%的时间浪费在"等待同步"
当我打开调用图时,我发现两件看起来很奇怪的东西,但我不确定它们是什么意思:
我注意到数据库连接服务使用的是DAL项目(遗憾的是一些遗留代码),这是完全静态的.
阅读本文之后,我不确定DAL的代码是否存在问题,这里是存储过程调用的示例.
public static int PerformStoredProcedure(string storedP,string ext,out string msg)
{
msg = "";
SqlCommand command = GetSqlCommand(storedP,ext);
command.Connection.Open();
int result = (int)PerformStoredProcedure(command,out msg);
command.Connection.Close();
return result;
}
Run Code Online (Sandbox Code Playgroud)
通常从DB连接服务调用此方法:
public static int PerformStoredProcedureWithParams(string storedP,string ext,out string msg, params object[] pars)
{
msg = "";
SqlCommand command = GetSqlCommand(storedP,ext);
UpdateCommandParams(command, pars);
command.Connection.Open();
int result = …Run Code Online (Sandbox Code Playgroud) 我有一个在Linux机器上运行的nodejs服务。我需要连接到Sql Server(Mssql)。
我正在使用mssql程序包,但在与AD连接时看不到任何支持。
还有一个Azure Keyvault,我们可以通过调用以下命令与连接到计算机的MSI连接:
import * as msRestAzure from 'ms-rest-azure'
msRestAzure.loginWithVmMSI({ resource: this.azureKeyVaultResourceName })
Run Code Online (Sandbox Code Playgroud)
有没有办法使用我从loginWithVmMSI获得的凭据并连接到Sql Server?有没有一种方法可以直接用AD调用Sql Server?
是否有其他驱动程序对此提供支持?乏味还是nodemssql?
在过去的几天里,我一直在学习关于并行性的知识,我遇到了这个例子.
我把它与顺序for循环并排放在一起,如下所示:
private static void NoParallelTest()
{
int[] nums = Enumerable.Range(0, 1000000).ToArray();
long total = 0;
var watch = Stopwatch.StartNew();
for (int i = 0; i < nums.Length; i++)
{
total += nums[i];
}
Console.WriteLine("NoParallel");
Console.WriteLine(watch.ElapsedMilliseconds);
Console.WriteLine("The total is {0}", total);
}
Run Code Online (Sandbox Code Playgroud)
我很惊讶地看到NoParallel方法的完成速度比网站上给出的并行示例快得多.
我有一台i5 PC.
我真的认为Parallel方法会更快完成.
对此有合理的解释吗?也许我误会了什么?
我试图让时间戳首先出现,但它总是添加到 json 的末尾。
我使用过这个配置:
var myFormat = winston.format.combine(winston.format.timestamp({format:'YYYY-MM-DD HH:mm:ss.SSS'}),
winston.format.json());
this.winstonLogger = winston.createLogger();
this.winstonLogger.configure({
level: 'info',
format: myFormat,
transports: [
new winston.transports.Console(),
]
});
Run Code Online (Sandbox Code Playgroud)
并得到如下日志:
{"level":"info","message":"app is loaded","timestamp":"2019-06-03 17:01:10.054"}
Run Code Online (Sandbox Code Playgroud)
我想要的只是它看起来像:
{"timestamp":"2019-06-03 17:01:10.054","level":"info","message":"app is loaded"}
Run Code Online (Sandbox Code Playgroud) 我正在使用AsyncFileUpload以允许用户异步上传文件.
我想将文件的大小限制为1MB.
到目前为止,我看到的只能在上传完成时得到文件的长度
比如上传开始时:
(OnClientUploadStarted)
function UploadStarted(sender,args)
{
//if bigger than 1MB (approximately)
if (args.get_length() > 1000000 )
{
ShowActionNotificationError( errorMessage);
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
args.get_length()为null,所以我不能使用它...
上传完成后:
(OnClientUploadComplete)
function UploadComplete(sender,args)
{
//if bigger than 1MB (approximately)
if (args.get_length() > 1000000 )
{
ShowActionNotificationError( errorMessage);
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
工作正常,但文件已经上传...
那么在上传之前如何知道文件的大小呢?我错过了一些非常简单的事吗?
我真的想在不处理HTTP请求长度和排序的情况下这样做.
谢谢!
我目前正在维护和开发一个以ajax方式使用大量web服务的网站.
注册服务是在aspx中完成的,如下所示:
<asp:ScriptManagerProxy id="ScriptManager1" runat="server">
<services>
<asp:ServiceReference Path="WebServices/WSAdministrator.asmx"></asp:ServiceReference>
</services>
</asp:ScriptManagerProxy>
Run Code Online (Sandbox Code Playgroud)
并在javascript中使用服务是这样完成的
WSAdministrator.GetConsumerClubInfo(ConsumerClubId,
OnSucceededToGetConsumerClubInfo,
OnFailedToGetConsumerClubInfo);
Run Code Online (Sandbox Code Playgroud)
我想知道我是否可以轻松地引用自托管WCF服务(在同一台机器上).
有什么建议?
编辑:WCF服务在Windows服务上运行,它公开webHttpBinding和basicHttpBinding端点.
在没有App_Code的情况下阅读ASP.Net WCF服务之后,我意识到我应该创建一个svc文件,它将作为服务的引用.
我创建了这个svc文件:
<%@ ServiceHost Language="C#" Service="MyService.Namespace.Contract" %>
Run Code Online (Sandbox Code Playgroud)
在web.config文件中我添加了以下行:
<services>
<service name="MyService.Namespace.Contract">
<endpoint address="setAddress" binding="basicHttpBinding" contract="MyService.Namespace.ContractInterface"/>
</service>
</services>
Run Code Online (Sandbox Code Playgroud)
地址正常,但是当我尝试从svc访问引用时,我收到以下错误:
无法找到作为ServiceHost指令中的Service属性值提供的类型''.
我在这里错过了什么?
注意:有一些很好的答案,但所有我已经知道的事情,我的问题是如何使用asp.net引用我的自托管WCF服务,以便我可以从javascript使用它,这就是全部,为此我仍然没有答案......
我看到一些类似问题的回复告诉我们应该有一个IIS托管服务作为实际服务的"管道",然后ScriptManager应该引用它,也许这是唯一的答案......
我在安全网站上问了这个问题,那里的人建议我应该在这里发布.
一些背景.我们拥有专有设备,可通过专有操作系统和其他通过Windows操作系统运行ac#dll的设备运行.两者都通过TCP连接联系我们的服务器,对于我们的服务器,两种类型的请求是相同的.TCP服务器通过http绑定将部分请求传输到自托管WCF服务.请求被加密,如链接中所示(就像C#dll加密它们一样).
我正在尝试切断TCP服务器并将请求直接发送到WCF服务.
我的问题是,看起来WCF服务收到请求字符串错误,它无法解密它.
似乎服务器端有额外的\ t \n接收字符串.除此之外它看起来一样.
这是服务器端的解密代码:
byte[] byteChiperText = Encoding.Default.GetBytes(input);
if (k.Length != 16)
{
throw new Exception("Wrong key size exception");
}
TripleDESCryptoServiceProvider des = new TripleDESCryptoServiceProvider();
des.Mode = CipherMode.ECB;
des.Padding = PaddingMode.Zeros;
des.Key = k;
ICryptoTransform ic = des.CreateDecryptor();
MemoryStream ms = new MemoryStream(byteChiperText);
CryptoStream cStream = new CryptoStream(ms,
ic,
CryptoStreamMode.Read);
StreamReader sReader = new StreamReader(cStream);
byte[] data = new byte[byteChiperText.Length];
int len = sReader.BaseStream.Read(data, 0, data.Length);
output = Encoding.Default.GetString(data, 0, len);
cStream.Close();
Run Code Online (Sandbox Code Playgroud) c# ×3
wcf ×3
.net ×2
ajax ×2
asp.net ×2
javascript ×2
node.js ×2
client-side ×1
concurrency ×1
encryption ×1
iis ×1
logging ×1
node-mssql ×1
smtp ×1
sql-server ×1
url-routing ×1
web-services ×1
winston ×1