Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从Appsettings.json(.core)传递url参数以进行响应_C#_Reactjs_.net Core - Fatal编程技术网

C# 从Appsettings.json(.core)传递url参数以进行响应

C# 从Appsettings.json(.core)传递url参数以进行响应,c#,reactjs,.net-core,C#,Reactjs,.net Core,我正在尝试访问appsettings.json文件中的url参数。原因是api URL与发布的开发不同。我不完全确定解决这个问题的最佳方法 我找到了一个可行的解决方案: 正如我从上面的线程所理解的,我需要创建一个服务并从React调用它?这似乎有点奇怪,因为我总是(?)需要对同一个项目执行API请求,以接收API请求所需的URL 另一个建议是使用webpack,或者以某种方式将url保存在客户端。但这是否意味着每当我需要更改环境时,我都需要在两个位置(后端和前端)更改环境 这就是我的appse

我正在尝试访问appsettings.json文件中的url参数。原因是api URL与发布的开发不同。我不完全确定解决这个问题的最佳方法

我找到了一个可行的解决方案:

正如我从上面的线程所理解的,我需要创建一个服务并从React调用它?这似乎有点奇怪,因为我总是(?)需要对同一个项目执行API请求,以接收API请求所需的URL

另一个建议是使用webpack,或者以某种方式将url保存在客户端。但这是否意味着每当我需要更改环境时,我都需要在两个位置(后端和前端)更改环境

这就是我的appsettings.json文件的外观(对于.Development和.Publish,变量相同,但值不同)

在我的Startup课程中,我得到了以下值:

    var urlValue =
        _configuration.GetSection("Url");
我不能根据环境从后端获取一次值并使用React接收它吗

不确定我是否在这里想错了


如果有人能给我指出正确的方向,我将不胜感激。

我的解决方案是使用.env文档,但仍然使用.core launchSettings env

要使此解决方案发挥作用,我需要env cmd:

npm install env-cmd
添加了3.env文件:

 1. .env
 2. .env.development
 3. .env.prod
每个文件都包含一个url字符串:

REACT_APP_Url = https://localhost:44000
我添加了env check-in.core启动文件:

    app.UseSpa(spa =>
            {
                spa.Options.SourcePath = "ClientApp";

                if (env.IsDevelopment())
                {
                    spa.UseReactDevelopmentServer(npmScript: "start");
                }
                else if (env.IsProduction())
                {
                    spa.UseReactDevelopmentServer(npmScript: "build");
                }
            });
当我运行生产代码时,我指的是“构建”,所以在我的例子中,对象“构建”将运行

package.json文件:

"scripts": {
    "start": "rimraf ./build && react-scripts start",
    "build": "cross-env env-cmd -f .env.prod react-scripts start",
  }
我现在可以通过以下方式访问url:
{process.env.REACT\u APP\u Url}

我的解决方案是使用.env文档,但仍然使用.core launchSettings env

要使此解决方案发挥作用,我需要env cmd:

npm install env-cmd
添加了3.env文件:

 1. .env
 2. .env.development
 3. .env.prod
每个文件都包含一个url字符串:

REACT_APP_Url = https://localhost:44000
我添加了env check-in.core启动文件:

    app.UseSpa(spa =>
            {
                spa.Options.SourcePath = "ClientApp";

                if (env.IsDevelopment())
                {
                    spa.UseReactDevelopmentServer(npmScript: "start");
                }
                else if (env.IsProduction())
                {
                    spa.UseReactDevelopmentServer(npmScript: "build");
                }
            });
当我运行生产代码时,我指的是“构建”,所以在我的例子中,对象“构建”将运行

package.json文件:

"scripts": {
    "start": "rimraf ./build && react-scripts start",
    "build": "cross-env env-cmd -f .env.prod react-scripts start",
  }
我现在可以通过以下方式访问url:
{process.env.REACT_APP_Url}

这是否意味着您必须在后端和前端应用程序配置中硬编码值?@Hawkzey如果我没记错的话,不需要,因为我们在后端配置文件中没有使用任何API。如果您有更好的解决方案,请随时发布。如果我没记错的话,我们确实改变了我们的解决方案,因为我们后来有了其他需求。我们确实涉及到从后端到特定url请求的映射,例如:
app.map(“Api”)…
inside
Configure
在启动文件中。这不意味着你必须在后端和前端应用程序配置中硬编码值吗?@Hawkzey如果我没记错的话,不需要它,因为我们在后端配置文件中没有使用任何API。如果你有更好的解决方案,请随意发布。如果我记得的话r正确地说,我们确实改变了我们的解决方案,因为我们后来有了其他需求。我们确实涉及到从后端到特定url请求的映射,例如:启动文件中的
app.map(“Api”…
inside
Configure
)。