找回密码
 立即注册

QQ登录

只需一步,快速开始

林瑞奇

初级会员

28

主题

65

帖子

201

积分

初级会员

积分
201
林瑞奇
初级会员   /  发表于:2024-7-30 22:20  /   查看:1326  /  回复:7
1金币

我是用NGINX做代理,需要加一个目录,下面的地址应该是ip/mtreport/api/xxx, 没有这个mtreport路径,到时访问不了,请问这个在哪里设置




后台控制器:

[Route("mtreport/MyDesign")]
public class MyDesignController : MvcControllerBase
{

                [HttpGet]
     public IActionResult Index()
     {
         //return View();
         //return View("Index");
          return RedirectToAction("create");
     }

                [HttpGet("create")]
                public IActionResult Create()
                {
         return View("Index");
         
     }


页面:


<script type="text/javascript">
                var viewer = null;
                GrapeCity.ActiveReports.Designer.create('#ar-web-designer', {
                        rpx: { enabled: true },
                        appBar: { openButton: { visible: true } },
                        data: { dataSets: { canModify: true }, dataSources: { canModify: true } },
                        preview: {
                                openViewer: (options) => {
                                        if (viewer) {
                                                viewer.openReport(options.documentInfo.id);
                                                return;
                                        }
                                        viewer = GrapeCity.ActiveReports.JSViewer.create({
                                                element: '#' + options.element,
                                                renderFormat: 'svg',
                                                reportService: {
                                                url: 'mtreport/api/reporting',
                                                },
                                                reportID: options.documentInfo.id,
                                                settings: {
                                                        zoomType: 'FitPage',
                                                },
                                        });
                                }
                        }
                });
        </script>





附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

我理解一下,您现在做了nginx代理,也就是请求只有走到您代理的地址,才能访问到。现在不确定您的代理是怎么设置的,所以不确定后端服务的接口应该怎么才能被请求到。不过看到您的帖子里面提到需要地址是: ip/mtreport/api/ 所以我理解其实您是想要前端发出这个请求。才能访问到这个接口是吗。如果是这样,那就修改前端代码: 这个就是设置请求的路由。不过您可以直接在后端服务启动后,用浏览器访问一下这几个list接口,看一 ...

7 个回复

正序浏览
Eden.SunWyn认证
超级版主   /  发表于:2024-8-1 10:10:00
8#
林瑞奇 发表于 2024-7-31 16:22
问题解决了,谢谢

好的,那我把帖子关闭了。您有其他问题的话再开新帖解决。
回复 使用道具 举报
林瑞奇
初级会员   /  发表于:2024-7-31 16:22:54
7#
问题解决了,谢谢
回复 使用道具 举报
林瑞奇
初级会员   /  发表于:2024-7-31 14:27:27
5#
还是不行


我的代码如下:

@{
        var reportId = ViewBag.Id == null ? "" : ViewBag.Id;
}

<!DOCTYPE html>
<html lang="en">
<head>
        <title>报表设计</title>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta http-equiv="x-ua-compatible" content="ie=edge">

       
        <!-- For Virtual Directory -->
        @* <base href="/mtreport/"> *@

        <style>
                body, html {
                        width: 100%;
                        height: 100%;
                        margin: 0;
                        padding: 0
                }

                @@keyframes arwd-loader {
                        from {
                                color: #fff
                        }

                        to {
                                color: #0092ff
                        }
                }

                .ar-web-designer {
                        width: 100%;
                        height: 100%
                }

                .ar-web-designer__loader {
                        display: flex;
                        width: 100%;
                        height: 100%;
                        background-color: #0092ff;
                        color: #fff;
                        font-size: 18px;
                        animation-name: arwd-loader;
                        animation-duration: .62s;
                        animation-timing-function: ease-in-out;
                        animation-iteration-count: infinite;
                        animation-direction: alternate;
                        justify-content: center;
                        align-items: center
                }
        </style>

        <link rel="stylesheet" href="~/vendor/css/fonts-googleapis.css" type="text/css" />
        <link rel="stylesheet" href="~/jsViewer.min.css" />
        <link rel="stylesheet" href="~/web-designer.css" />

        <link rel="icon" type="image/png" sizes="32x32" href="~/icons/favicon-32x32.png" />
        <link rel="icon" type="image/png" sizes="16x16" href="~/icons/favicon-16x16.png" />
        <link rel="shortcut icon" href="~/icons/favicon.ico" />

</head>
<body>
        <script src="~/jsViewer.min.js"></script>
        <script src="~/web-designer.js"></script>

        <div id="ar-web-designer" class="ar-web-designer">
                <span class="ar-web-designer__loader"><b>报表设计</b></span>
        </div>
        <script>
                var viewer = null;
                GrapeCity.ActiveReports.Designer.create('#ar-web-designer', {
                        rpx: { enabled: true },
                        appBar: { openButton: { visible: true } },
                        // server: {
                        //         url: 'mtreport',
                        //         onBeforeRequest: (init) => {
                        //                 init.headers.token = "token";
                        //                 return init;
                        //         }
                        // },
                        data: { dataSets: { canModify: true }, dataSources: { canModify: true } },
                        preview: {
                                openViewer: (options) => {
                                        if (viewer) {
                                                viewer.openReport(options.documentInfo.id);
                                                return;
                                        }
                                        viewer = GrapeCity.ActiveReports.JSViewer.create({
                                                element: '#' + options.element,
                                                renderFormat: 'svg',
                                                reportService: {
                                                        url: 'api/reporting',
                                                },
                                                reportID: options.documentInfo.id,
                                                settings: {
                                                        zoomType: 'FitPage',
                                                },
                                        });
                                }
                        }
                });
        </script>
</body>
</html>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Felix.LiWyn认证
超级版主   /  发表于:2024-7-31 12:14:42
4#
问题描述:

配置nginx后找不到资源

问题回答:
您好,配置nginx地址后,接口请求的地址是不是发生了改变,后端报表请求需要的路由配置是这个:

config.Prefix
默认请求时 /api/***'
如果将请求改成 ar/report
则后端的接口就会变成   /ar/report/datasetsList  ....等等,您尝试修改一下这个试一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
林瑞奇
初级会员   /  发表于:2024-7-31 11:42:33
3#
没有看懂呢,我的代码viewer = GrapeCity.ActiveReports.JSViewer.create({
                                                element: '#' + options.element,
                                                renderFormat: 'svg',
                                                reportService: {
                                                url: 'mtreport/api/reporting',
                                                },
已经是加了前缀,部署后访问还是mtreport这个前缀
回复 使用道具 举报
Eden.SunWyn认证
超级版主   /  发表于:2024-7-31 11:38:43
2#
本帖最后由 Eden.Sun 于 2024-7-31 11:41 编辑

问题描述:
使用nginx之后报错404.

问题解决:
您好,从您的描述来看,您在使用nginx代理之后  请求的url中多了一层,/mtreport/api/xxx。
但是ar的接口并不知道,按照原先的 api/xxx 去请求时,就会找不到文件,
您在接口中加一层url路径应该就可以了。可以参考下面这个设置:
https://gcdn.grapecity.com.cn/fo ... d=219241&pid=802042


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
最佳答案
最佳答案
Felix.LiWyn认证
超级版主   /  发表于:2024-7-30 22:20:08
来自 6#
我理解一下,您现在做了nginx代理,也就是请求只有走到您代理的地址,才能访问到。现在不确定您的代理是怎么设置的,所以不确定后端服务的接口应该怎么才能被请求到。不过看到您的帖子里面提到需要地址是: ip/mtreport/api/

所以我理解其实您是想要前端发出这个请求。才能访问到这个接口是吗。如果是这样,那就修改前端代码:
  1. GrapeCity.ActiveReports.Designer.create('#ar-web-designer', {
  2.         server: {
  3.                         url: "<span style="background-color: rgb(255, 255, 255);">ip/mtreport/api</span>"
  4.         }
  5. }
复制代码
这个就是设置请求的路由。不过您可以直接在后端服务启动后,用浏览器访问一下这几个list接口,看一下到底需要怎样的请求才能访问通这个接口。

这个接口都是可以直接请求的,返回的是json
/{自定义的路由}/templates/list
后面的都是固定的,动态的其实就是  {api}   这块,如果后端的的请求还是用原来的请求 /api/templates/list 就可以访问到,说明您的nginx哪里没有配置好。如果用您修改后的可以访问。那就按前面的改前端的就可以

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部