我正在编写一个带有信号服务器和 Web 客户端的测试应用程序,我想知道是否有办法确定或让服务器知道客户端正在与服务器建立哪种传输方法。
关于在客户端和服务器之间具有持久双向连接的 websockets 或长轮询,它不断轮询服务器直到服务器响应然后关闭连接,我必须注意传输的任何缺点方法不是持久双向连接之外的网络套接字,特别是如果将有许多长时间运行的请求一个接一个地发出?
我注意到来自客户端的多个请求将由集线器处理并在完成后返回,例如我发送一个请求等待 10 秒然后另一个请求等待 1 秒。集线器将首先响应 1 秒的等待请求,然后是 10 秒的延迟,我很好奇每个请求创建的线程是否通过相同的持久双工连接附加到客户端。
这是我的示例代码。
class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
public class RunningHub : Hub
{
public void SendLongRunning(string name, string waitFor)
{
Clients.All.addMessage(name, "just requested a long running request I'll get back to you when im done");
LongRunning(waitFor);
Clients.All.addMessage(name, "I'm done with the long running request. which took " + waitFor + " ms");
}
private void LongRunning(string waitFor)
{
int …Run Code Online (Sandbox Code Playgroud) 我有一个报告查看器控件,显示一个仪表板stye报告.它有一些图表可供概述,但是在IE11中查看时,报告根本不会呈现,只显示空白.底层存储过程也在运行.
我做了一些测试
我不确定IE是如何与webviewer控件交互的问题.
更新 - 凭借Fiddler的魔力,它看起来像是一个错误被吃掉而且在请求blank.gif时没有显示,这似乎是我认为结果gif的占位符.URL中缺少IterationId.奇怪的是,审查FireFox和Chrome的Fiddler跟踪结果时,会出现与URL中遗漏的IterationId相同的错误,但图表仍然显示.我认为这仍然是问题所在.
请求标头
GET /Reserved.ReportViewerWebControl.axd?ReportSession=....&Culture=1033
&CultureOverrides=True&UICulture=1033&UICultureOverrides=True
&ReportStack=1&ControlID=...
&OpType=ReportImage&ResourceStreamID=Blank.gif HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
文本Resonse
[HttpHandlerInputException: Missing URL parameter: IterationId]
Microsoft.Reporting.WebForms.HandlerOperation.GetAndEnsureParam(NameValueCollection urlQuery, String paramName) +104
Microsoft.Reporting.WebForms.ReportImageOperation.PerformOperation(NameValueCollection urlQuery, HttpResponse response) +102
Microsoft.Reporting.WebForms.HttpHandler.ProcessRequest(HttpContext context) +380
System.Web.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +599
System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +171
Run Code Online (Sandbox Code Playgroud) 我正在查看常见日志记录的文档,并没有注意到在利用其他日志记录技术(如Log4Net,企业库,Nlog等)之外写入日志文件的任何支持.我只是想知道是否有人知道如何通过将Common.Logging配置为写入文件,或者如果我必须回退到包含在common.logging中的另一个日志记录技术.
我有一个简单的用例,我正在创建一个表,用一些基本信息填充它并创建一个表值函数,在这种情况下,如果名称为'Apple',则只返回一行.
Select * from FruitTable Where Name = 'Apple'
Run Code Online (Sandbox Code Playgroud)
一切正常,直到我决定不再需要Active列,然后从表中删除它.重新运行该功能后,我收到此错误
-- Use the function it fails Msg 4502, Level 16, State 1, Line 1
-- View or function 'GetApples' has more column names specified than columns defined.
Select * from GetApples()
Run Code Online (Sandbox Code Playgroud)
我环顾四周,看看如果一个表被更改,这是一个带有视图的事件,但是使用这个函数我从FruitTable中选择*并且预计如果对Fruit表做了任何更改,无论是添加还是删除列Select*将会有益的未来,因为我不必定义结果表的列结构.
此外,我只是在函数上执行了一个SP_Help,并注意到它看起来像即使我做了一个select*,实际上存储了关于列的元数据.
SP_Help GetApples
--Column_name Type
--Id int
--Name varchar
--Active bit
Run Code Online (Sandbox Code Playgroud)
所以我有两个问题.
有没有办法从函数中删除列,或者在Alter之后以某种方式刷新函数?
鉴于我在表值函数中使用select*遇到了这些问题,最好是实际定义结果表列结构,还是用select*做我想做的事情,不需要太多保养什么时候改变基础表?
谢谢
这是测试SQL
-- Create the Simple Table Fill in Some Values
Create Table FruitTable(Id int, Name varchar(50), Active bit)
Insert Into FruitTable values
(1 …Run Code Online (Sandbox Code Playgroud)