繁体   English   中英

React Native 应用程序没有响应我的本地 .net api

[英]React Native app doesn't response my local .net api

伙计们,我刚开始使用 react native,我已经尝试了很多使它与 .net api 一起工作的东西,但是当它变成通过模拟器发送获取请求时,它显示“网络请求失败”。 我用谷歌搜索了所有内容,但没有解决方案,只能获取“10.0.2.2”而不是我的本地 IP。 我做错了什么或者我错过了什么?

应用程序.js

async function getAll() {
  console.warn('getAll');
  return fetch('https://10.0.2.2:5001/api/Users/getall')
    .then(response => response.json().data)
    .then(response => console.log(response))
    .catch(error => console.error(error));
}

const App: () => Node = () => {
  const [users, setUsers] = useState(getAll());

  return (
    <View style={styles.menu}>
      <SectionList
        sections={[{title: 'Users', data: users}]}
        renderItem={({item}) => (
          <Text style={styles.user}>{item.userName}</Text>
        )}
        renderSectionHeader={({section}) => (
          <Text style={styles.header}>{section.title}</Text>
        )}
        keyExtractor={(item, index) => index}
      />
    </View>
  );
};

const styles = StyleSheet.create({
  sectionContainer: {
    marginTop: 32,
    paddingHorizontal: 24,
  },
  sectionTitle: {
    fontSize: 24,
    fontWeight: '600',
  },
  sectionDescription: {
    marginTop: 8,
    fontSize: 18,
    fontWeight: '400',
  },
  highlight: {
    fontWeight: '700',
  },
  user: {
    fontSize: 16,
    marginTop: 12,
    color: '#1e90ff',
  },
  header: {
    fontSize: 24,
    marginBottom: 16,
    color: '#00bfff',
  },
  menu: {
    backgroundColor: '#006400',
  },
});

export default App;

启动设置.json

{
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:45028",
      "sslPort": 44367
    }
  },
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    },
    "WebAPI": {
      "commandName": "Project",
      "dotnetRunMessages": "true",
      "launchBrowser": true,
      "launchUrl": "swagger",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}

启动.cs

    public void ConfigureServices(IServiceCollection services)
    {

        services.AddControllers();
        services.AddCors();
        services.AddHttpContextAccessor();
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebAPI", Version = "v1" });
        });

        services.AddDependencyResolvers(new ICoreModule[] {
            new CoreModule()
        });
    }

    
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseSwagger();
            app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebAPI v1"));
        }

        app.UseHttpsRedirection();

        app.UseWebSockets();

        app.UseRouting();

        app.UseAuthentication();

        app.UseStaticFiles();

        app.UseAuthorization();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers();
        });
    }

程序.cs

public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .UseServiceProviderFactory(new AutofacServiceProviderFactory())
            .ConfigureContainer<ContainerBuilder>(builder =>
            {
                builder.RegisterModule(new AutofacBusinessModule());
            })
            .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });

数据库上下文.cs

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(@"Server=localhost\SQLEXPRESS;Database=Mobile;Trusted_Connection=True");
    }

用户.cs

public class User : IEntity
{
    public int Id { get; set; }
    public string UserName { get; set; }
    public string Gender { get; set; }
    public string Email { get; set; }
    public string Password { get; set; }

}

我必须对 .Net api 进行更改,它可以工作

在 startup.cs 上评论这一行

        //app.UseHttpsRedirection();

启动设置.json

"applicationUrl": "https://localhost:5001", "http://localhost:5000",

将此行更改为

"applicationUrl": "http://localhost:5000",

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM