天天看點

Asp.Net Core MVC用戶端調用 Asp.Net Core Web Api ,Api再調用Grpc服務

1、沿用上一篇的Asp.Net Core Web API服務,修改Startup.cs,解決跨域問題

public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {

            services.AddControllers();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApiService", Version = "v1" });
                c.ResolveConflictingActions(apiDescriptions => apiDescriptions.First());
            });
            services.AddSingleton<UserServer>(new UserServer());
            services.AddGrpcClient<TestGrpc.TestGrpcClient>(options =>
            {
                options.Address = new Uri("http://localhost:5000");
            });

            services.AddCors(options =>
             {
                 options.AddPolicy("myAllows", policys =>
                 {
                     policys.AllowAnyHeader();
                     policys.AllowAnyMethod();
                     policys.AllowCredentials();
                     policys.WithOrigins(new[] { "http://localhost:5005" });
                     }) ;
             }
            );

        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
                app.UseSwagger();
                app.UseSwaggerUI(c => c.SwaggerEndpoint("/swagger/v1/swagger.json", "WebApiService v1"));
            }

            app.UseRouting();
            app.UseCors("myAllows");
            app.UseAuthorization();

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

2、建立Asp.Net Core Web MVC項目

Asp.Net Core MVC用戶端調用 Asp.Net Core Web Api ,Api再調用Grpc服務

3、修改launchSettings.json

{
 
  "profiles": {
        "WebApplication1": {
      "commandName": "Project",
      "dotnetRunMessages": "true",
      "launchBrowser": true,
      "applicationUrl": "http://localhost:5005",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      }
    }
  }
}
           

4、修改Index.cshtml

@{
    ViewData["Title"] = "Home Page";
}
<script src="~/lib/jquery/dist/jquery.min.js"></script>
<div class="text-center">
    <h1 class="display-4">Welcome</h1>
    <p>Learn about <a href="https://docs.microsoft.com/aspnet/core" target="_blank" rel="external nofollow" >building Web apps with ASP.NET Core</a>.</p>
</div>
<div id="showApiData">

</div>
<div id="showGrpcData">

</div>

<script type="text/javascript">
    $(function () {
        $.ajax({
            url: "http://localhost:5007/api/MyApi/Get",
            type: "Get",
            success: function (data) {
                var str = "";
                alert(JSON.stringify(data));
                for (var i = 0; i < data.length; i++) {

                    str += data[i].name;
                }
                $("#showApiData").html(str);
            }
        })

        $.ajax({
            url: "http://localhost:5007/api/MyApi/GetGrpc",
            type: "Get",
            success: function (data) {
                var str = "";
                alert(JSON.stringify(data));
                str = data;
                $("#showGrpcData").html(str);
            }
        })

    })


</script>
           

5、啟動Grpc 服務,啟動Asp.Net Core Web API 服務,啟動MVC項目。

繼續閱讀