我遇到了一个问题,我的部署循环通过Recycling.从Visual Studio:
"在更新或升级操作期间,角色实例会循环一定次数.这表示新服务版本或配置服务时提供的配置设置会阻止角色实例运行.最可能的原因是您的代码会抛出未处理的异常.请考虑修复您的服务或更改配置设置,以便角色实例不会抛出未处理的异常.然后启动另一个更新或升级操作.在您开始另一个更新或升级操作之前,Windows Azure将继续尝试将您的服务更新为您提供的新版本或配置"
我的问题:捕获异常的最佳方法是什么?我对C#有点新鲜.我的onStart的精简版本,以防它有用:
public override void Run()
{
// This is a sample worker implementation. Replace with your logic.
Trace.WriteLine("WorkerRole1 entry point called", "Information");
while (true)
{
Thread.Sleep(10000);
Trace.WriteLine("Working", "Information");
}
}
public override bool OnStart()
{
// Set the maximum number of concurrent connections
ServicePointManager.DefaultConnectionLimit = 12;
// Retrieve storage account from Connection String
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString"));
// Create blob client
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
// retrieve reference to container (blob resides within container)
CloudBlobContainer container …Run Code Online (Sandbox Code Playgroud) 假设您有一个应用程序,允许用户监视他们的所有牛奶壶.所有牛奶壶都会在某个时候到期.
我想要监控所有的牛奶壶,看看他们的"isExpired"属性是真是假.
我应该每隔一段时间用一些像timerjob这样的东西迭代所有的水罐来更新属性吗?如果我想要一个水壶过期后立即反馈怎么办?在.NET/C#世界中,我可以使用哪些工具来实现这种便宜/高效的工具?
一旦jug过期,我最终会使用signalR之类的东西将通知推送到网络客户端 - 我只是不知道如何确定一个水壶过期而不经常迭代所有东西.
==
原谅我把两个问题塞进去,但显然当用户正在观看水壶时发送通知是很重要的.那么也许只有在用户的会话处于活动状态时运行的timerjob才有效?这里的任何提示/推荐阅读都会很棒.
我想在Azure中运行一些集成测试.我不能在TFServices中运行它们,因为它们需要一个数据库.我想知道是否可以将我的项目推送到TFS,让TFS构建解决方案并将其推送到Azure,然后让Azure在将其提交到生产之前对测试数据库运行一些测试.沿着管道的任何故障都会回到视觉工作室.这甚至可以远程实现吗?
我有以下代码.如果我将它扔到一个页面上,按钮就会出现,我可以通过开发人员工具看到它.在另一个页面上,该按钮未显示,dev工具显示表单中缺少的脚本标记.可能是什么导致了这个?
<form action="" method="POST">
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="sss"
data-amount="999"
data-name="sss"
data-description="Widget"
data-image="/img/documentation/checkout/marketplace.png"
data-locale="auto">
</script>
</form>
Run Code Online (Sandbox Code Playgroud) 我已经阅读了很多关于仅在需要时使用模式的内容.我目前正在编写一个非常简单的应用程序,它实现了存储库和服务模式 - 我现在正在讨论是否使用DTO将我的域对象传递给视图.这是一个单页面应用程序.
我开始在我的模型中创建DTO类,但仍无法理解它们提供的好处.感觉就像我只是无缘无故地重复一切.
什么时候适合使用DTO?它在什么时候变得必要或有益?任何例子/样本都会很棒.
我的应用程序分为三层:
在我的服务层中,我调用了一个EmailSender服务,该服务目前通过SmtpClient和MailMessage发送明文电子邮件.据我所知,相当标准的东西.
我现在正在尝试使用Razor模板格式化这些电子邮件的主体,该模板接受MailMessage作为模型,并生成一些HTML,我可以将其粘贴到邮件正文中.
现在这就是我所拥有的:
public void SendAsyncEmail(MailMessage message)
{
message.IsBodyHtml = true;
message.body = {generate html string from body here using razor?}
// Async code here
}
Run Code Online (Sandbox Code Playgroud)
假设我定义了一个这样的剃刀视图:
@model System.Net.Mail.MailMessage
<div>
<h1>@Model.Subject</h1>
<p>@Model.Body</p>
</div>
Run Code Online (Sandbox Code Playgroud)
如何从我的服务方法将MailMessage传递到此视图中,并为其生成电子邮件正文的字符串?
我有一个多租户应用程序,我试图确定最简单的方法来控制哪些CSS文件捆绑基于任何传入请求的URL.
我认为我可以在RegisterBundles()中有一些条件逻辑,它将Url作为字符串,并相应地捆绑:
public static void RegisterBundles(BundleCollection bundles, string tenant = null) {
if (tenant == "contoso"){
bundles.Add(new StyleBundle("~/contoso.css")
}
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将字符串传递给RegisterBundles,即使它是可能的,也不是正确的解决方案.这里的任何帮助都会很棒.
我的应用程序有 MVC 控制器和 WebApi 控制器。到目前为止,我已经能够将控制器之间共享的任何逻辑分别推送到 aBaseController和 中BaseApiController。
现在我遇到了一种情况,API 控制器和 MVC 控制器都在做同样的事情——注册一个新的用户帐户。这个过程有点复杂,因为我有一个多租户应用程序,看起来像这样:
// MVCController : BaseController
public ActionResult Register(RegisterModel model) {
// see if the model is valid
// check and make sure the credentials check out with policy requirements
// add the user to the user table if they aren't already there
// create a tenancy
// assign cookie
}
Run Code Online (Sandbox Code Playgroud)
大多数实际工作都被推送到服务层,但调用和条件占用了大约 20 行代码,我不想将这些代码复制并粘贴到类似的 WebApi 控制器中。
所以我想知道我是否可以以某种方式同时拥有我的BaseController和BaseApiController从通用控制器继承的,我可以在其中放置此身份验证代码。这里推荐的方法是什么?
我有一个简单的网络应用程序.它由带有暂存和生产插槽的Azure Web App组成.如果没有要考虑的数据库迁移,我可以通过以下方式轻松实现无缝更新:
当我要进行数据库迁移时,这会变得更加棘手.现在我做的是:
这意味着我仍然有效地停机,因为2 + 3不会同时发生,这意味着在几秒钟内,我的用户将在"数据库模式已更改"时遇到不完美的行为.
这里最简单的解决方案是什么?我想我可能也需要启动一个临时数据库,但是我不得不担心复制和连接字符串管理会增加一些开销.
我有以下几点:
string sproc = AppDomain.CurrentDomain.BaseDirectory + "/Stored Procedures/new_message.sql";
context.Database.ExecuteSqlCommand(sproc);
Run Code Online (Sandbox Code Playgroud)
但是,sproc由于某种原因,该路径无效。从SeedEF 代码优先迁移方法访问项目目录中的文件的正确方法是什么?
asp.net-mvc ×4
azure ×3
c# ×3
.net ×1
asp.net ×1
azure-devops ×1
code-first ×1
mailmessage ×1
signalr ×1
tfs ×1
timer ×1