小编Nic*_*ick的帖子

MSBuild远程Web部署中的App_Offline

我在MSBuild脚本中有以下任务,使用Web Deploy(MSDeploy服务)部署到远程服务器:

  <Target Name="Deploy">
    <MSBuild
            Projects="$(SolutionFile)"
            Properties="Configuration=Release; DeployOnBuild=True; 
              DeployTarget=MsDeployPublish; MSDeployPublishMethod=WMSvc; 
              MsDeployServiceUrl=$(DeployServiceUrl); 
              DeployIisAppPath=$(DeployIisAppPath); 
              UserName=$(DeployUserName); Password=$(DeployPassword); 
              CreatePackageOnPublish=True; AllowUntrustedCertificate=True" />
  </Target>
Run Code Online (Sandbox Code Playgroud)

它工作正常.但是,我想在部署应用程序之前放置app_offline.htm文件(在远程服务器上),并在部署之后删除app_offline.htm文件(或出错时).是否有MSBuild属性或任何其他脚本调整才能实现?

提前致谢.

msbuild web-deployment msdeploy webdeploy

22
推荐指数
2
解决办法
8008
查看次数

应用程序池回收的SignalR连接处理

我正在使用SignalR(0.5.3)集线器作为聊天应用程序,每次击键都发送到服务器(保存在数据库中),中继到所有客户端,并返回一个返回值(各种字符串标记)服务器.

它工作正常,直到应用程序池循环,然后它停止将键击中继到所有客户端(因为我猜想内存服务器状态丢失),并且服务器也不返回任何值.此时,我认为通过SignalR的所有请求都由IIS排队,然后在应用程序池被回收后进行处理.

我的问题是如何处理这种情况,以便所有客户端都知道由于应用程序池回收而导致服务器不可用/延迟,通知用户等待一段时间,然后在重新连接时恢复操作?

c# signalr signalr-hub

10
推荐指数
1
解决办法
2910
查看次数

在发布时突然没有复制引用的程序集(DLL)

在Web项目发布期间,我遇到了一个引用库(ServiceStack.OrmLite)部署的奇怪问题.这是工作正常,直到最后一周左右,而现在突然有些ServiceStack的DLL不被当项目发布到本地文件系统,FTP或Web部署,从Visual Studio或MSBuild的复制.

OrmLite引用通过nuget添加到类lib项目中.类lib项目引用被添加到主Web App项目中.当我发布Web App项目时,它编译并复制除五个ServiceStack.OrmLite DLL中的三个(即ServiceStack.Common,ServiceStack.Interfaces和ServiceStack.Text未复制)之外的所有文件.我已经检查(甚至重置)所有DLL引用的'Copy Local'属性为'true',但问题仍然存在.我还检查过OrmLite未在GAC注册.

任何提示或建议表示赞赏.

更新1:

我遇到了一堆与同一问题相关的帖子(但特别是ServiceStack没有).似乎Visual Studio和msbuild [正确地]在发布期间忽略项目中的任何间接引用.

以下是我遇到的一些解决方案:

  1. 也参考主项目中的程序集.

  2. 使用构建脚本将DLL复制为构建后事件.

  3. 向类lib添加一个虚拟(模拟)方法,并从发布期间未复制的程序集或命名空间中实例化任何类.我选择了这个选项,它部分地解决了这个问题.现在,ServiceStack.Common和ServiceStack.Text被复制,但ServiceStack.Interfaces仍然没有被复制,即使我已经创建了一个'ServiceStack.Logging.LogManager'的模拟实例,它是ServiceStack.Interfaces的一部分.所以,基本上我还是卡住了.

.net visual-studio servicestack ormlite-servicestack

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

如何在 ASP.NET Core 中间件中直接将响应正文设置为文件流?

下面将文件流写入Response.BodyASP.NET Core 中间件的示例代码不起作用(发出空响应):

public Task Invoke(HttpContext context)
{
    context.Response.ContentType = "text/plain";

    using (var fs = new FileStream("/valid-path-to-file-on-server.txt", FileMode.Open)
    using (var sr = new StreamReader(fs))
    {
        context.Response.Body = sr.BaseStream;
    }

    return Task.CompletedTask;
}

Run Code Online (Sandbox Code Playgroud)

任何想法直接设置context.Response.Body?

注意:管道中的任何下一个中间件都将被跳过,不再进行进一步处理。

更新(另一个例子):一个简单的MemoryStream分配也不起作用(空响应):

context.Response.Body = new MemoryStream(Encoding.UTF8.GetBytes(DateTime.Now.ToString()));
Run Code Online (Sandbox Code Playgroud)

asp.net-core asp.net-core-middleware asp.net-core-webapi razor-pages

7
推荐指数
1
解决办法
4768
查看次数

PayPal订阅付款失败重试

是否可以增加针对PayPal订阅失败付款的重试次数?我找不到任何全局帐户级设置。

有一个sraHTML按钮参数,用于在取消之前重新尝试失败的重复付款,其文档显示“ PayPal尝试在取消订阅之前再收取两次付款”,但实际上在现有订阅的详细信息下显示:“此配置文件1次失败后将被暂停”,这是矛盾的。

paypal paypal-subscriptions

5
推荐指数
0
解决办法
180
查看次数

使用 spaCy 更好地识别命名实体和相似性

我一直在为一个小型副项目尝试 spaCy,并且有一些问题和疑虑。

我注意到 spaCy 的命名实体识别结果(及其最大的en_vectors_web_lg模型)似乎不如 Google Cloud Natural Language API [1] 准确。Google 的 API 能够更准确地提取更多实体,很可能是因为它们的模型更大。那么,有没有办法在可能的情况下使用不同的模型或通过其他技术来改善 spaCy 的 NER 结果?

其次,Google 的 API 还返回相关实体的维基百科文章链接。spaCy 是否也可以做到这一点,或者在 spaCy 的 NER 结果之上使用其他技术?

第三,我注意到 spaCy 有一个similarity()使用 GloVe 词向量的方法 [2]。但作为新手,我不确定在一组文档(例如 5000-10000 个文本文档,每个文档少于 500 个字符)中的每个文档之间频繁执行相似性比较以生成相似文档桶的最佳方法是什么?

希望有人能提供任何建议或提示。

非常感谢!


[1] https://cloud.google.com/natural-language/

[2] https://spacy.io/usage/vectors-similarity

python nlp named-entity-recognition spacy

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

通过WebJobs重新排队或删除Azure存储队列中的邮件

我希望有人能澄清一些关于Azure存储队列及其与WebJobs交互的内容:

  1. 要执行重复的后台任务(即添加到队列一次,然后按设定的间隔重复),有没有办法更新QueueTrigger函数中提供的相同消息,以便可以扩展其租约(可见性)作为重新排队和避免的方式到期?

  2. 通过上面提到的重复后台作业模式,我也试图找出一种"按需"删除/过期作业的方法.因为在WebJobs的上下文之外似乎不可能这样做,所以我想可能将messageId和popReceipt存储在Table存储中作为持久缓存删除,然后在QueueTrigger函数中传递消息时执行DeleteMessage的表查找,以便不再重复该消息.

任何建议或提示表示赞赏.干杯:)

azure azure-table-storage azure-storage-queues azure-webjobs

3
推荐指数
1
解决办法
4960
查看次数

在C#中并发下载/处理

我正在寻找使用C#同时下载1000个远程网页(使用HttpWebRequest),将它们写入单个本地文件并在下载完所有文件后运行一些处理代码的最快,最可靠的方法,同时充分利用并行性和可以使用非阻塞并发。

该服务器是运行Windows 2008和.NET 4.0的四核(vCPU)VPS(不能使用更新的异步/等待功能)。

你有什么建议?

更新:到目前为止,建议的选项包括:反应性扩展(Rx),异步CTP,TPL。

看起来异步CTP将是理想的方式,其次是Rx和TPL。家伙怎么说?

c# parallel-processing concurrency multithreading task-parallel-library

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

Azure功能的吞吐量不佳

我正在评估Azure功能以创建缩略图.较大图像的源URL放置在存储队列中,带有队列触发器的C#函数用于处理URL(从源下载,调整大小并上载到另一个位置).

每个函数调用需要500毫秒进行处理,这很好.然而,经过一系列测试后,我发现整体并行处理吞吐量并不是那么好.对于队列中1500-2000个项目的工作负载,平台每秒仅执行大约10个函数实例.

有没有办法扩展并使平台同时执行更多的函数实例?

azure-functions

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

这是返回方法中的有效对象处理代码模式吗?

我在C#项目中注意到以下对象处理代码模式,我想知道它是否可以接受(虽然它可以工作).

public object GetData()
{
    object obj;

    try
    {
        obj = new Object();

        // code to populate SortedList

        return obj;
    }
    catch
    {
        return null;
    }
    finally
    {
        if (obj != null)
        {
            obj.Dispose();
            obj = null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

对于这个例子,我使用的是一般的"对象"而不是项目中的实际IDisposable类.

我知道每次都会执行'finally'块,即使返回值,但是由于对象被设置为null,它会以任何方式影响返回值(或者它是否是新的对象实例)(对于看起来像对象处理和GC的目的).

更新1:

我尝试了下面的代码片段并且返回对象是非null的,虽然本地对象设置为null,所以它可以工作,考虑到下面的一些注释,这有点奇怪:

public StringBuilder TestDate()
{
    StringBuilder sb;

    try
    {
        sb = new StringBuilder();

        sb.Append(DateTime.UtcNow.ToString());

        return sb;
    }
    catch
    {
        return null;
    }
    finally
    {
        sb = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我正在使用C#4.0.

PS我只是在审查这个项目代码.我不是原作者.

更新2:

找到了这个谜团的答案[1].执行finally语句,但返回值不受影响(如果在finally块中设置/重置).

[1] 尝试中真正发生的事情{return x; } …

c# garbage-collection

0
推荐指数
1
解决办法
178
查看次数