在我的ASP.NET 5应用程序中,由于HtmlHelper,我生成了一个下拉列表。除了生产之外,在localhost中一切正常,我们有500个服务器错误。
我能够在github上找到执行的强制转换,然后将它执行到MVC lib中,精确地进入DefaultHtmlGenerator类:
当我们想要根据我们传入参数的SelectList呈现下拉列表时执行此强制转换。
我们可以看到注释指定我们必须至少使用框架的4.5版本。在堆栈跟踪结束时,我们看到了生产中使用的框架版本:
但是,我们的服务器上安装了4.5版,我尝试将web.config文件插入到projet的wwwroot中以强制使用目标框架:
但它不起作用,我们正确地指出了我们想要用于project.json的框架:
所以我的问题是:我们可以使用编译targetFramework =“4.5”和 httpRuntime targetFramework =“4.5”来强制IIS使用4.5版本吗?
答案 0 :(得分:0)
您正在尝试在IIS托管代码中运行。你不能这样做。 IIS不再管理该进程。基本上,IIS将运行EXE并将转发请求。就是这样。
检查以下过程以将DNX
应用程序正确部署到IIS。或者更好,请阅读此处的文档:http://docs.asp.net/en/latest/publishing/iis.html
首先,确保在IIS中安装了HTTP平台处理程序(x86 / x64)。
将您的应用程序发布到文件系统并获取\artifacts\bin\MyWebApp\Release\Publish
文件夹的内容并将其复制到IIS服务器中。
配置应用程序时,请定位您复制的wwwroot
文件夹。
现在,您需要解锁system.webServer/handlers
部分,该部分可以在Configuration Editor
下的服务器节点上的IIS管理器中找到。搜索正确的部分并从右侧操作窗格中解锁。
确保应用程序池设置为No Managed Code
。 DNX作为外部进程运行。 IIS不需要知道它当前正在运行什么。
最后,使用以下内容创建web.config
:
<configuration>
<system.webServer>
<handlers>
<add name="httpplatformhandler" path="*" verb="*" modules="httpPlatformHandler" resourceType="Unspecified" />
</handlers>
<httpPlatform processPath="..\approot\web.cmd" arguments="" stdoutLogEnabled="false" stdoutLogFile="..\logs\stdout.log" startupTimeLimit="3600"></httpPlatform>
</system.webServer>
</configuration>
它应该在那时运行。