我有一个带有实体框架和 .NET Framework 4 的 ASP.NET MVC 4 w/ Razor 项目
在我的 chtml View 页面中,我有 2 个 BeginForms,一个是更新帐户设置,另一个是创建一个新的 TTS 语音文件(文本到语音)。第一个表单调用我的“Boxes”控制器方法,它工作得很好,它将更新的值分配到实体数据库中。
第二个 BeginForm 使用一个简单的文本框,我将在其中输入文本,它将指向我在名为“Boxes_TTS”的同一控制器中的第二个方法。
该方法可以正常调用,没有任何问题。我有我的 TTS 代码,它接收字符串并对其进行处理,然后将其保存到实体中。以下是我的 TTS Helper 类在保存文件时执行的步骤:
1)它获取文本字符串
2)它创建一个波流
3) 然后它将波形流传递给将其转换为 VOX 文件(另一种类型的语音文件)的方法。在这种方法中,它将wav文件写入磁盘,读取它,然后将其转换为vox,然后再次将其读入内存。
4)一旦文件被转换为vox并读入内存,该方法然后将blob写入EF内的表中
5) 然后它从临时目录中删除 wav 和 vox 文件。
我不能完全在内存中进行这种转换,因为这个想法不是在文本很大并且 TTS 引擎需要同时执行多个进程时占用内存。
在我的控制器中,这是调用 TTS 辅助方法的方法的代码:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Boxes_TTS(BulletinBoardBoxesViewModel vm)
{
SetHttpContext(this.HttpContext);
if (!IsIPAllowed)
return new RedirectResult(@"~/Home/NotNow", true);
var id = Session["RecordID"];
if (id == null)
return new RedirectResult(@"~/Home/Index", true);
int? BoxID = (int?)Session["SelectedBBBoxID"];
if (BoxID == 0)
BoxID = null;
vm.submitTTS((int)Session["RecordID"], (int)Session["CompanyID"], BoxID);
ViewBag.SubmittedData = "Your TTS message has been made active.";
return View("Boxes",vm);
}
我单步执行了代码并返回 View("Boxes",vm); 行正在执行,但视图框从未导航到。相反,MVC 站点已停止并且在我的 Internet Explorer 页面上有一个“忙碌”图标。一段时间后,忙碌图标停止,当我尝试导航到站点内的另一个页面时,它不起作用,给我空错误等。如果我删除 vm.submitTTS() 方法,返回视图工作正常美好的。
有什么建议么?
谢谢
由良