IIS生产服务器

时间:2018-06-08 17:48:19

标签: reactjs.net

首先,很多这项技术对我来说都是新的,所以我为noob问题道歉。此外,这是我的第一篇文章(经过多年的阅读),请原谅格式化。

我有一个我通过MSVS 2017运行的Web应用程序。我正在用React.js编写我的前端。在通过nuget安装适当的软件包之后,当我在本地开发机器上运行调试版和发布版时(使用iisexpress),我可以使用一些东西。

但是,在我提交源更改并将其推送到测试服务器(IIS)后,应用程序运行正常。但是,不会转换从测试服务器返回的JSX文件。我只是得到原始的JSX文件。然而,在我的本地机器上,会转换返回的文件。

我有一个带有单个静态Configure方法的ReactConfig.cs文件,我在那里调用通过ReactSiteConfiguration.Configuration.AddScript添加我的JSX文件,但这似乎是不必要的,因为我仍然得到一个转换结果,即使它被注释掉了。在我的ReactConfig.cs文件的顶部,我有类似于: [assembly: webActivatorEx.PreApplicationStartMethod(typeof(MyApp.Api.Controllers.MyController), "AutoMapperStart")]

那么,我的问题是如何在我的开发机器上发生转换,而不是部署机器。

在我的web.config文件中,我尝试了两种方法:

<httpHandlers>
    <add verb="GET" path="*.jsx" type="React.Web.BabelHandlerFactory, React.Web" />
</httpHandlers>

<remove name="Babel" /><add name="Babel" verb="GET" path="*.jsx" type="React.Web.BabelHandlerFactory, React.Web" preCondition="integratedMode" /></handlers>

但似乎两者似乎都没有对已部署的服务器产生影响。

如果有人对我接下来要看的内容有任何建议,我们将不胜感激。

更新: 我注意到允许我的开发环境进行转换的相关项是我的web.config文件中的第二个代码部分。但是,我在服务器上看不到相同的行。是否通常手动编辑web.config文件&#39;或许每个部署?

1 个答案:

答案 0 :(得分:0)

所以,这是我最终想到的对我有用的东西。

首先,是的,web.config文件作为模板部署。然后根据需要手动配置。

其次,更重要的是,让服务器将JSX呈现给纯JS有两个部分。

  1. 我在web.config文件中需要以下内容:
  2. <system.webServer>
        <handlers>
            <remove name="Babel" />
            <add name="Babel" verb="GET" path="*.jsx"
                type="React.Web.BabelHandlerFactory, React.Web"
                preCondition="integratedMode"/>
        </handlers>
    </system.webServer>
    
    1. 最后,在assemblyBinding部分:
    2.   <dependentAssembly>
          <assemblyIdentity name="JavaScriptEngineSwitcher.Core" publicKeyToken="c608b2a8cc9e4472" culture="neutral" />
          <bindingRedirect oldVersion="0.0.0.0-2.4.9.0" newVersion="2.4.9.0" />
        </dependentAssembly>