是否可以在使用C#的应用程序中启动ASP.Net 5应用程序?

时间:2015-08-12 04:33:23

标签: asp.net asp.net-mvc asp.net-mvc-4 owin asp.net-core-mvc

我正在开发嵌入式设备的应用程序,我们希望添加对设备的远程访问。 ASP.Net 5看起来非常有吸引力,因为它提倡它可以自我托管。

我看了几个博客(例如http://blog.tomasjansson.com/asp-net-5-self-hosting-the-application/),发现可以从IIS外的命令行运行mvc项目。但是可以在C#应用程序中托管mvc项目而无需从命令行调用它吗?

在博客之后,我将此命令添加到project.json。

<select ng-model="mySelectedChoice" ng-options="myChoice.name as myChoice.name for myChoice in myChoices"></select> 

 selceted value is {{mySelectedChoice}}

 <ul ng-show="mySelectedChoice">
      <li ng-repeat="item in foo.items | filter:{propertyIWantToMatchOn: mySelectedChoice}">{{item.someDisplayText}}</li>
 </ul>

看起来程序集Microsoft.AspNet.Hosting具有托管mvc应用程序的实际代码。但我找不到任何关于它的文件。

感谢任何建议。谢谢!

1 个答案:

答案 0 :(得分:0)

我想出了一个在我的应用程序中运行mvc6的临时解决方案。

首先,将应用程序发布到c#解决方案的输出目录。然后,我创建一个新进程来调用命令来启动mvc6应用程序。这个问题是mvc6在我的c#app的独立应用程序域中运行,我必须使用其他进程间通信技术来桥接这两者。

代码如下:

string appDir = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
        string mvcProjectPath = appDir + @"\DirOfPublishedMVC";

        _process = new Process();
        ProcessStartInfo startInfo = new ProcessStartInfo { WindowStyle = ProcessWindowStyle.Hidden, FileName = "web.cmd", WorkingDirectory = mvcProjectPath };
        _process.StartInfo = startInfo;
        _process.Start();

web.cmd由publish命令生成,该命令在project.json命令部分中定义。