在IIS上更改targetFramework

时间:2015-06-05 14:07:17

标签: c# asp.net iis asp.net-core-mvc

在我的ASP.NET 5应用程序中,由于HtmlHelper,我生成了一个下拉列表。除了生产之外,在localhost中一切正常,我们有500个服务器错误。

enter image description here

我能够在github上找到执行的强制转换,然后将它执行到MVC lib中,精确地进入DefaultHtmlGenerator类:

enter image description here

当我们想要根据我们传入参数的SelectList呈现下拉列表时执行此强制转换。

我们可以看到注释指定我们必须至少使用框架的4.5版本。在堆栈跟踪结束时,我们看到了生产中使用的框架版本:

enter image description here

但是,我们的服务器上安装了4.5版,我尝试将web.config文件插入到projet的wwwroot中以强制使用目标框架:

enter image description here

但它不起作用,我们正确地指出了我们想要用于project.json的框架:

enter image description here

所以我的问题是:我们可以使用编译targetFramework =“4.5” httpRuntime targetFramework =“4.5”来强制IIS使用4.5版本吗?

1 个答案:

答案 0 :(得分:0)

您正在尝试在IIS托管代码中运行。你不能这样做。 IIS不再管理该进程。基本上,IIS将运行EXE并将转发请求。就是这样。

检查以下过程以将DNX应用程序正确部署到IIS。或者更好,请阅读此处的文档:http://docs.asp.net/en/latest/publishing/iis.html

要求

  • Windows 7或更高版本
  • Windows Server 2008 R2或更高版本
  • 安装了IIS

程序

首先,确保在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>

它应该在那时运行。

Source