我们正在WCF中开发一个代理,它将作为运行我们的自定义客户端应用程序的一些手持设备的通信工具.我很好奇人们使用什么错误处理策略,因为我宁愿不在try/catch中包装每个代理调用.
当我开发ASP .NET时,我没有抓住大多数异常,我利用Global asax中的Application_Error,然后可以记录异常,发送电子邮件,并将用户重定向到自定义错误登录页面.我在WCF中寻找的与此类似,只是它允许我从中心位置向客户端传递一般错误原因.
基本上我很好奇人们如何在WCF应用程序中集中他们的异常处理.
谢谢
我想在我的WPF应用程序中播放声音文件.目前我有以下电话:
private void PlaySound(string uriPath)
{
Uri uri = new Uri(@"pack://application:,,,/Media/movepoint.wav");
var player = new MediaPlayer();
player.Open(uri);
player.Play();
}
Run Code Online (Sandbox Code Playgroud)
现在,如果我指定Media/movepoint.wav
为构建操作Content
并将其作为相对或绝对文件路径加载它工作正常,所以我怀疑这与此有关Pack URI
,但我不能为我的生活找出什么.
目标是将文件存储为资源,以使其在输出目录中不可用.我可以提供WAV副本或MP3副本.
我有一个ASP .NET Web应用程序,后端正在与ASMX Web服务进行通信.我们已计算,初始请求的平均等待时间为20秒.我想知道是否有一种方法可以将Web服务发送到预编译的服务器,从而无需编译.
我们还注意到IIS倾向于回收其工作线程,这也会导致编译.流程本身不会经常访问,但它需要更快.
有什么想法吗?
提前致谢
更新:感谢所有的建议,我尝试过其中的一些,这就是我找到的.回收时间关闭/修补是危险的,因为我不希望线程只是无所事事.经过进一步检查,该网站正在进行预编译,所以我的问题是为什么Web服务有一个初始的启动时间?
现在:倾向于下面的热身脚本建议
更新:该服务正在来自其他计算机上的Web服务器.我们只看到初始请求的问题.
这真让我抓狂。我有一个扩展,如果出现错误,我们可以用它来更改请求的内容响应。基本上,如果一切正常,它会正常序列化为 JSON,但如果我们收到未处理的异常,我们会根据不同的对象进行序列化。
我们需要围绕此进行单元测试,但我不知道如何编写它们。验证其是否有效的方法围绕 StatusCode、错误消息实例和响应的 ContentType。
为了修改返回的响应,我使用了 WebOperationContext 静态类。我见过嘲笑这个的例子,但似乎我必须硬编码特殊逻辑,然后这些逻辑就会开始渗透到实际代码中,这是我不想要的。
对 WCF 行为扩展进行单元测试的最佳方法有哪些?
给出以下代码:
function Person(firstName, lastName) {
this.FirstName = firstName;
this.LastName = lastName;
}
Person.prototype.showFullName = function() {
return this.FirstName + " " + this.LastName;
};
var person = new Person("xx", "xxxx");
var jsonString = JSON.stringify(person);
var thePerson = JSON.parse(jsonString);
Run Code Online (Sandbox Code Playgroud)
我的目标是能够在thePerson上调用"showFullName".虽然我知道JS并不真正拥有对象,但它必须有某种方式能够说某些事情应该以某种方式对待,比如投射thePerson
到Person
.
尝试在高级计划上部署功能应用程序,以从容器提供功能。此方法的 HOWTO 效果很好:https://learn.microsoft.com/en-us/azure/azure-functions/functions-create-function-linux-custom-image ?tabs=nodejs#create-an-app-从图像
但是,当我尝试使用 Terraform 部署它时,没有销售。一切看起来都正确,但该功能没有显示在侧边菜单中(对于使用 az CLI 部署的功能来说是这样),我也无法使用 Postman 来实现它。
通过资源浏览器我可以看到函数没有被填充。这是我正在使用的 HCL
resource "azurerm_app_service_plan" "plan" {
name = "${var.app_name}-Premium-ConsumptionPlan"
location = "WestUS"
resource_group_name = "${data.azurerm_resource_group.rg.name}"
kind = "Elastic"
reserved = true
sku {
tier = "ElasticPremium"
size = "EP1"
}
}
data "azurerm_container_registry" "registry" {
name = "${var.app_name}registry"
resource_group_name = "${data.azurerm_resource_group.rg.name}"
}
resource "azurerm_function_app" "funcApp" {
name = "${var.app_name}-userapi-${var.env_name}-funcapp"
location = "WestUS"
resource_group_name = "${data.azurerm_resource_group.rg.name}"
app_service_plan_id = "${azurerm_app_service_plan.plan.id}"
storage_connection_string = "${azurerm_storage_account.storage.primary_connection_string}"
version = "~2"
app_settings = { …
Run Code Online (Sandbox Code Playgroud) 我知道这可能是一个重复的帖子,但我想确保我清楚地问这个问题并根据我的措辞得到答案.
我有一个从常见的可视元素继承的表单集合:MainVisualForm.这个元素为我提供了一种了解表单何时向后退步的方法.序列中接下来的形式取决于用户操作.
我目前有一个这样的代码,因为我正在测试:
form.OnNextForm += (f, ev) =>
{
Parameters.Vehicle = ((VehicleForm)f).SelectedVehicle;
//FormStack.Push(Parameters.Vehicle == Vehicle.SUV
// ? new KeyValuePair<Type, IFormActionBehvaior>(typeof(EntertainmentForm), null)
// : new KeyValuePair<Type, IFormActionBehvaior>(typeof(ColorForm), null));
};
Run Code Online (Sandbox Code Playgroud)
此分配紧接着是ShowDialog(),它会阻止用户,直到Dialog表单关闭.
问题是:表单关闭后.NET是否等待EventHandler完成,然后运行直接跟在ShowDialog()之后的代码,或者是由不同的线程处理的处理程序?
首先十分感谢
c# ×3
wcf ×2
.net ×1
asmx ×1
asp.net ×1
azure ×1
casting ×1
concurrency ×1
events ×1
iis ×1
javascript ×1
json ×1
media-player ×1
performance ×1
terraform ×1
unit-testing ×1
web-services ×1
winforms ×1
wpf ×1