我希望将MVC网站迁移到Azure网站.我目前在IIS中设置的内容如下:
主MVC网站 - > www.thesite.com(物理路径= wwwroot/thesite)
网站的WordPress博客 - > www.thesite.com/blog(物理路径= wwwroot/thesiteblog)
这是我的两个独立项目.它们存在于wwwroot中的单独目录中.在主MVC站点上,我配置了一个虚拟目录,将www.thesite.com/blog指向wwwroot/thesiteblog.
是否可以使用Azure网站复制此行为?我看到有虚拟应用程序和目录的配置选项,但它们似乎只允许指向具有相同网站的其他位置.理想情况下,我想创建2个Azure网站,并将网站#1的/ blog子目录指向网站#2的根目录.我不希望将网站#2中的代码合并到网站#1中,但如果我发现这是我唯一的选择,我会这么做.
我不可能是那里之前唯一有过这种需求的人,但我很难找到关于如何做到这一点的任何最新信息.有什么想法吗?
我在.NET MVC4项目中使用SimpleMembership.在开发过程中,在手动操作/重建数据库的过程中,我遇到了一个在生产中不太可能发生的错误,但我想解决这个问题,我找不到一个优雅的方法来处理它.
如果在登录应用程序后,您的用户名在数据库中被更改,或者您的用户记录被完全删除,则用户将无法再访问应用程序的任何页面...包括允许匿名查看的公共页面,以及登录屏幕.相反,抛出异常 - "未找到具有名称'username'的用户".
我的应用程序中的所有页面都显示部分视图,该视图呈现登录/注销控件.无论数据库中有什么,Request.IsAuthenticated都返回true.应用程序似乎认为用户仍然根据cookie中的信息登录,但是在数据库中找不到相应的记录.清除auth cookie解决了这个问题,但这不是我想要提供给可能遇到此问题的用户的指令.
我目前的解决方案是在Global.asax中捕获该异常,清除cookie并重定向到登录页面.这对我来说似乎完全是hacky.
有没有人有更好的解决方案?我从来没有遇到过使用旧的.NET成员资格提供商这样的问题...我的期望是这种情况应该开箱即用,我不应该考虑到它......如果记录被改变了/删除在数据库中,用户应该只是失败授权并自动重定向到登录页面.
我开始使用WebJobs来处理一些后台任务,我遇到了有关错误处理和重试的问题.看来,如果我的任何函数都是异步的,那么即使我在函数中抛出异常,该函数也总是在仪表板中报告成功.
请考虑以下简单示例 - >
public static void AlwaysFail([QueueTrigger("alwaysfail")] string message)
{
throw new Exception("Induced Error");
}
Run Code Online (Sandbox Code Playgroud)
上面的代码表现得像我期望的那样.消息从队列中弹出,抛出异常,在WebJobs仪表板中报告失败,消息被重新排队.这发生了5次,然后消息存储在毒性队列中.
但是,如果我尝试类似的功能,但使其像下面的那样异步 - >
public async static void AlwaysFail([QueueTrigger("alwaysfail")] string message)
{
throw new Exception("Induced Error");
}
Run Code Online (Sandbox Code Playgroud)
结果不如预期.消息从队列中弹出,抛出异常,但仪表板报告成功,不重试任何内容.此外,在这些情况下,似乎虽然仪表板报告成功,但异常是使用一个超出此世界退出代码的进程崩溃,等待60秒,然后重新启动,如下面的日志所示 - >
[11/11/2014 06:13:35> 0dc4f9:INFO]执行:'Functions.AlwaysFail'因为'alwaysfail'上检测到新队列消息.[11/11/2014 06:13:36> 0dc4f9:错误] [11/11/2014 06:13:36> 0dc4f9:错误]未处理的异常:System.InvalidOperationException:诱导错误[11/11/2014 06:13 :36> 0dc4f9:ERR]在Plmtc.BackgroundWorker.Functions.d__2.MoveNext()[11/11/2014 06:13:36> 0dc4f9:ERR] ---从前一个位置抛出异常的堆栈跟踪结束 - 系统中的System.Runtime.CompilerServices.AsyncMethodBuilderCore.b__5(对象状态)[11/11/2014 06:13:36> 0dc4f9:ERR]中的[11/11/2014 06:13:36> 0dc4f9:ERR] .Threading.QueueUserWorkItemCallback.WaitCallback_Context(对象状态):在System.Threading.ExecutionContext.RunInternal [2014年11月11日六时13分36秒> 0dc4f9 ERR](的ExecutionContext的ExecutionContext,ContextCallback回调,对象的状态,布尔preserveSyncCtx)[11/System.Threading.ExecutionContext.Run(ExecutionContext executionContext,ContextCallback callback,Object state,Boolean preserveSyncCtx)[11/1114 06:13在System.Threading.Q ueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()[2014年11月11日6点13分36秒> 0dc4f9:ERR]在System.Threading.ThreadPoolWorkQueue.Dispatch()[2014年11月11日6点13分36秒> 0dc4f9 :ERR]在System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()[11/11/2014 06:13:36> 0dc4f9:SYS ERR]作业因退出代码失败-532462766 [11/11/2014 06:13:36> 0dc4f9:SYS INFO]过程落下去,等待60秒[2014年11月11日6时13分36秒> 0dc4f9:SYS INFO]状态改变为PendingRestart
唯一的方法是我可以让仪表板中的async函数失败,编写一个将POCO类作为参数但只在消息中包含一个简单字符串的函数.在这些情况下,在到达任何函数代码之前,在消息/参数绑定期间发生故障.
有没有成功使用异步函数来响应队列触发器而没有这些问题的人?
azure ×1