我有一个包含 Web 应用程序和类库的解决方案。我为此添加了两个 Azure 函数项目,第一个是版本 1,第二个是版本 2。两者都在本地运行良好。这段代码位于一个在线存储库(Visual Studio Online,现在是 Azure DevOps)中,我设置了从它到门户中设置的 Azure 功能的持续部署。但是,尽管代码部署成功,就像 Azure 网站一样,但 URL 显示“您的函数应用程序已启动并正在运行”,但两个项目均未显示在门户中的函数下。我正在使用 Visual Studio 2017。
我有一个简单的 .NET V3 WebJob,在 .NET 网站中启动并运行了一个计时器触发器,如本答案所述:Scheduled .NET WebJob V3 example
但是,在输出中,我收到此警告:
warn: Host.Startup[0]
Warning: Only got partial types from assembly: Microsoft.Azure.WebJobs.Extensions.Storage, Version=3.0.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
The following loader failures occured when trying to load the assembly:
- Could not load file or assembly 'System.ComponentModel.Annotations, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
- Method 'Commit' in type 'Microsoft.Azure.WebJobs.Host.Blobs.Bindings.DelegatingCloudBlobStream' from assembly 'Microsoft.Azure.WebJobs.Extensions.Storage, Version=3.0.6.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' does not have an implementation.
- Method 'Commit' in …
我用谷歌搜索,无法找到任何可能的错误列表,例如"已经收到电子邮件xyz".(我知道那肯定是一个)."名字xyz已被采用." 是另一个(用户名).我在Github上使用的是Microsoft ASP.NET Identity 2.0,而不是版本3.它们似乎只是简单的字符串,似乎没有错误代码或任何东西.我已经查看了Codeplex上的代码,并且似乎没有任何清晰的列表,只是单元测试中的一些模糊片段.
首先,我知道这个问题:MVC 5 AddToRole需要在它运行之前注销吗?
而这一个:什么是ASP.NET Identity的IUserSecurityStampStore <TUser>接口?
所以请不要将其标记为副本.
我正在尝试将另一个用户添加到角色中(即我们添加到该角色的用户不是当前用户.如果是,则我链接到的第一个问题的答案就足够了.)
像这样:
IdentityResult result = await userManager.AddToRoleAsync(userID, roleName);
Run Code Online (Sandbox Code Playgroud)
我正在做的两种情况是:从管理页面,当前用户是管理员; 以及基本身份验证保护的webhook(根本没有当前用户).
问题:如果此更改适用的用户已登录并使用该应用程序,我需要立即应用"添加到角色"更改.他们不应该退出并再次进行更改,而且需要立即进行.
感谢大家.
编辑:顺便说一下,User.IsInRole(roleName)要求注销和登录以反映被添加到新角色.UserManager.IsInRole(userID,roleName)没有,因为(我假设)它直接进入数据库表进行检查.但是如果用户点击了一个以他们刚刚添加的角色担保的动作方法,他们仍然需要再次登录,这是公平的.如果有办法解决这个问题仍然很好奇.
编辑:下面是授权属性的源代码:https://github.com/ASP-NET-MVC/aspnetwebstack/blob/4e40cdef9c8a8226685f95ef03b746bc8322aa92/src/System.Web.Mvc/AuthorizeAttribute.cs
它使用User.IsInRole,这本质上是我们需要再次登录的原因.似乎覆盖的方法是AuthorizeCore(HttpContextBase httpContext).我现在不是很勇敢或者不够好,但是如果你想要有很多人会发现这很有帮助.
我正在测试不同的Azure Web应用程序定价层.在门户网站中,我点击了"向上扩展(应用服务计划)",并选择了B1基本定价层来测试性能与F1免费和D1共享的比较.当我尝试从Basic缩小到Free或Shared时,它会显示"已成功更新App Service计划",但它不起作用.我已经尝试了一个多星期左右,它只是不起作用.在此之前,我能够在Free和Shared之间切换,没有任何问题.当然这是某种错误?我们必须能够降级吗?
我已将 .NET(不是 .NET Core)WebJob 从 V2(工作正常)升级到 V3。我无法让它运行。我只是想让网络作业调用我根据这个 CRON 时间表编写的函数:“0 0 8,10,12,14,16,18,20 * * *”。它运行的网站也是 .NET,而不是 .NET Core。
我该怎么做呢?我只想要一个简单的工作 .NET 代码示例。我看到过这个问题New Azure WebJob Project - JobHostConfiguration/RunAndBlock在NuGet更新后丢失,这个例子https://github.com/Azure/azure-webjobs-sdk/blob/00686a5ae3b31ca1c70b477c1ca828e4aa754340/sample/SampleHost/Program.cs和这个文档https://learn.microsoft.com/en-us/azure/app-service/webjobs-sdk-how-to#triggers但没有一个有帮助。
c# asp.net azure-webjobs azure-webjobssdk azure-webjobs-triggered
以下是我整个网站中不同操作和视图的一些奇怪行为:
每当我POST一些动作方法并且Model.IsValid为false时,我都会返回视图.每当在返回的视图中调用Html.Action()时,我都会遇到以下异常:
(System.Web.HttpException): No matching action was found on controller 'xyz'.
This can happen when a controller uses RouteAttribute for routing,
but no action on that controller matches the request.
Run Code Online (Sandbox Code Playgroud)
我正在使用属性路由.
public class RouteConfig
{
// REGISTER ROUTES
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapMvcAttributeRoutes();
}
}
Run Code Online (Sandbox Code Playgroud)
因此,即使Html.Action调用第一次在GET操作方法中返回View(),Html.Action总是在POST返回View()之后抛出此异常.这是我网站上的一般模式.
跆拳道?有什么想法在这里出了什么问题?我唯一能想到的是我随着时间的推移添加了更多的路线,现在它很困惑.如果是这样的话,我该如何修复或测试?
我刚想到我有很多路由/动作方法,其中动作方法的路径的get和post版本是相同的,除了action方法的GET或POST属性.我以前确定每条路线都是完全独特的,因为我得到了一些歧义,但是将其改回了相同的路线,用于获取和后置动作方法,唯一的区别是get或post属性......我变得确信它是路由问题,但我不知道具体是什么问题.我有数百种动作方法的路由属性.
我以前从未见过如此微妙的东西,甚至不知道如何开始解决这样的问题.我不知道它是简单还是复杂,如果它是我的代码或框架.任何帮助将不胜感激.
更新:
一些示例代码,不确定它会有所帮助,因为相同的事情发生在许多完全不同的操作方法和视图中的模式,无论GET,POST,授权,未授权,在角色与否,antiforgerytoken ...
从视图调用标准Html.Action.大多数时候工作正常.(不同的重载没有区别.)
@Html.Action("CategoryDropDowns", "Category")
Run Code Online (Sandbox Code Playgroud)
这是被调用的内容(确切地说返回的内容没有区别,可能是ViewResult,可能是一个int).
// GET: /category/category-drop-downs
[HttpGet]
[Route("category/category-drop-downs")]
public ViewResult CategoryDropDowns()
{
}
Run Code Online (Sandbox Code Playgroud)
如果验证失败,则返回视图:
public ActionResult CreateListing(ListDetails listDetails)
{
if (ModelState.IsValid)
{
}
else
{ …
Run Code Online (Sandbox Code Playgroud) asp.net asp.net-mvc asp.net-mvc-routing attributerouting asp.net-mvc-5
我正在尝试更新用户.
AppUserManager appUserManager = HttpContext.GetOwinContext().GetUserManager<AppUserManager>();
AppUser member = await appUserManager.FindByIdAsync(User.Identity.GetUserId());
member.HasScheduledChanges = true;
IdentityResult identityResult = appUserManager.Update(member);
Run Code Online (Sandbox Code Playgroud)
如果后续调用Web API失败,我需要回滚对用户的任何更改.我知道交易,像这样:
using (var context = HttpContext.GetOwinContext().Get<EFDbContext>())
{
using (var dbContextTransaction = context.Database.BeginTransaction())
{
try
{
// Changes
member.HasScheduledChanges = true;
// Would this be transactional?
IdentityResult identityResult = appUserManager.Update(member);
context.SaveChanges();
dbContextTransaction.Commit();
}
catch //(Exception ex)
{
// dbContextTransaction.Rollback(); no need to call this manually.
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,在try块中使用AppUserManager进行的操作是否是事务性的?另外,他们使用相同的EFDbContext实例吗?换句话说,我不知道第二个代码示例开头的var context是否会被try块中的appUserManager"Update"方法调用使用.
此外,AppUserManager的创建方式如下:
public static AppUserManager Create(IdentityFactoryOptions<AppUserManager> options, IOwinContext context)
{
EFDbContext db = context.Get<EFDbContext>(); …
Run Code Online (Sandbox Code Playgroud) 我overflow-x:scroll
在面板中添加了,因为我的表格中有很多列,这对于滚动效果很好。但是面板标题的蓝色停止在页面的右侧;之后,面板标题是白色的,看起来很糟糕。如何使蓝色面板标题向右拉伸,使其不只是在页面的右侧被切断?
<div class="panel panel-primary" style="overflow-x:scroll">
<div class="panel-heading">Heading</div>
<table class="table table-striped">
<tr>
<th></th>
</tr>
<tr>
<td></td>
</tr>
</table>
</div>
</div>
Run Code Online (Sandbox Code Playgroud) asp.net ×6
c# ×4
azure ×3
asp.net-mvc ×2
css ×1
html ×1
responsive ×1
transactions ×1
usermanager ×1