小编Rya*_*lor的帖子

如何在运行时更改Crystal Report的ODBC数据库连接?

我有一份使用Crystal Reports 2008的报告,我需要部署一个生产系统,这意味着我需要能够在运行时更改数据库连接.数据库是PostgreSQL 8.3.0,我用来创建初始报告的连接是ODBC连接.

我找到了各种方法来更改数据库连接,包括以下内容:

reportDoc.Load(report);
reportDoc.DataSourceConnections[0].SetConnection("server", "database", "user", "pwd");
reportDoc.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, path);
Run Code Online (Sandbox Code Playgroud)

但是,这始终失败,并显示以下错误消息.

无法打开连接.

我已经通过pgAdmin III成功连接到数据库来验证连接参数,因此我知道连接参数是正确的.另外,如果我删除了SetConnection(...)行,那么代码如下所示:

reportDoc.Load(report);
reportDoc.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, path);
Run Code Online (Sandbox Code Playgroud)

然后使用报告中存储的连接参数运行报告.是否可能此方法不适用于ODBC连接?

如何在运行时更改Crystal Report的ODBC数据库连接?

postgresql odbc database-connection crystal-reports

10
推荐指数
1
解决办法
6万
查看次数

关于如何使用JSON.NET创建自定义GeoJson序列化程序的建议?

我将尝试创建一个C#库,使用Json.NET(用于序列化)和GeoAPI.NET(用于几何定义)将对象序列化为GeoJSON.

我已经考虑过两种不同的序列化实现方法,我不清楚哪种方法是最好的方法.他们是:

方法1 - 自定义属性

第一种方法涉及创建几个可应用于任何类以修改序列化的自定义属性.例如,一个类可能会像这样装饰:

[GeoJsonFeature]
public class Building
{
   [GeoJsonId]
   public Guid Id { get; set; }
   [GeoJsonProperty]
   public string Name { get; set; }
   [GeoJsonProperty]
   public int Floorcount { get; set; }
   [GeoJsonGeometry]
   public GeoAPI.Geometries.IGeometry Geometry { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后序列化对象就像下面这样简单:

JsonNetResult jsonNetResult = new JsonNetResult();
jsonNetResult.Formatting = Formatting.Indented;
jsonNetResult.Data = building;
return jsonNetResult;
Run Code Online (Sandbox Code Playgroud)

这种方法的优点是,任何业务对象都可以转换为GeoJSON对象,假设它具有所需的属性(例如,几何).缺点是我需要创建一些自定义属性来支持序列化.此外,这会影响业务对象的"混乱".

最后,我还没有确定这种方法是否可以使用JSON.NET,尽管它似乎是.

方法2 - 自定义JsonConverter

第二种方法涉及为各种类型创建自定义转换器.例如,我可能有一个GeoJsonConverter,当传递给定类型的对象,比如Feature时,会创建GeoJSON对象.这可能看起来像:

public class GeoJsonFeatureConverter
{
    public override void WriteJson(JsonWriter writer, object …
Run Code Online (Sandbox Code Playgroud)

c# json.net geojson

10
推荐指数
1
解决办法
3957
查看次数

如何最好地利用Json.NET来修改现有JSON对象的部分?

例:

我有以下JSON对象.

{"currentVersion" : "10.0", 
  "folders" : [], 
  "services" : [
    {"name" : "nyc", "type" : "MapServer"}, 
    {"name" : "philly", "type" : "MapServer"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我希望能够根据name属性的值从services数组中删除一个或多个项目.例如,我想搜索name ="nyc"并从数组中删除以下对象.

{"name" : "nyc", "type" : "MapServer"}
Run Code Online (Sandbox Code Playgroud)

最终结果是一个如下所示的对象:

{"currentVersion" : "10.0", 
  "folders" : [], 
  "services" : [
    {"name" : "philly", "type" : "MapServer"}
  ]
}
Run Code Online (Sandbox Code Playgroud)

我已经能够相当容易地创建新的JSON对象,我可以阅读现有的JSON对象.但是,我很难确定修改现有JSON对象的最佳方法.特别是因为它涉及查询JSON对象中的特定对象.

我发现的一个方法(特定于此示例)是重建我想要修改的JSON部分并根据需要替换标记.但是,我必须认为有更好的方法.此代码如下所示.

string json = @"{""currentVersion"" : ""10.0"", 
                    ""folders"" : [], 
                    ""services"" : [
                        {""name"" : ""nyc"", ""type"" : ""MapServer""}, 
                        {""name"" : ""philly"", ""type"" : ""MapServer""}
                    ]
                }";

string[] …
Run Code Online (Sandbox Code Playgroud)

c# json json.net

8
推荐指数
1
解决办法
1万
查看次数

如何实现HTTP响应过滤器以立即对整个内容进行操作,无需分块

正如其他几篇文章中所述(请参阅下面的参考资料)我试图创建响应过滤器,以便修改由另一个Web应用程序生成的内容.

我将基本的字符串转换逻辑工作并封装到源自公共FilterBase的Filters中.但是,逻辑必须对完整内容进行操作,而不是对内容进行操作.因此,我需要在写入时缓存块,并在完成所有写入时执行过滤器.

如下所示,我创建了一个从MemoryStream派生的新ResponseFilter.在写入时,内容缓存到另一个MemoryStream.在Flush上,现在在MemoryStream中的完整内容将转换为字符串,并且Filter逻辑将启动.然后将修改后的内容写回原始流.

但是,在每个第二个请求(基本上当一个新的过滤器在前一个过滤器上实例化)时,正在执行前一个过滤器的Flush方法.此时,由于_cachedStream为空,应用程序在_outputStream.Write()方法上崩溃.

活动顺序如下:

  1. 第一次请求
  2. 调用Write方法
  3. 调用Flush方法
  4. 调用Close方法
  5. 调用Close方法
  6. 此时,应用程序返回并显示正确的内容.
  7. 第二个请求
  8. 调用Flush方法
  9. 应用程序在_outputStream.Write上崩溃.ArgumentOutOfRangeException(offset).
  10. 继续崩溃(在Visual Studio中)
  11. 调用Close方法

我有几个问题:

  1. 为什么Close叫两次?
  2. 为什么在关闭后调用Flush?
  3. 对于Jay的观点,可以在完全读取流之前调用Flush,过滤器逻辑应该驻留在哪里?在关闭?在Flush但是"如果关闭"?
  4. 对一次处理整个内容的响应过滤器的正确实现是什么?

注意:如果我不重写Close方法,我会遇到完全相同的行为(减去Close事件).

public class ResponseFilter : MemoryStream
{
    private readonly Stream _outputStream;
    private MemoryStream _cachedStream = new MemoryStream(1024);

    private readonly FilterBase _filter;

    public ResponseFilter (Stream outputStream, FilterBase filter)
    {
        _outputStream = outputStream;
        _filter = filter;
    }

    // Flush is called on the second, fourth, and so on, page request (second request) with empty content.
    public override void Flush() …
Run Code Online (Sandbox Code Playgroud)

c# flush stream httpresponse filter

8
推荐指数
2
解决办法
5595
查看次数

如何在没有文档源的情况下使用Sandcastle帮助文件生成器生成文档?

我希望能够使用Sandcastle从现有主题文件(.AML)生成帮助文档.我使用Sandcastle帮助文件生成器来协助文档的配置和生成.

我不想发布任何代码文档,但是,如果我没有指定文档源(例如,项目,解决方案,DLL,exe等),那么构建将失败.

如何配置Sandcastle帮助文件生成器,以便我可以在不暴露代码文档的情况下生成文档?

documentation sandcastle

8
推荐指数
1
解决办法
2038
查看次数

使用ASP.NET Web API将表单yyyy-MM-dd的日期查询参数反序列化为noda time LocalDate对象

我正在研究使用NodaTime LocalDate来替换我们现有的BCL DateTime/DateTimeOffset类.由于我们对DateTime可论证的模糊行为的误解,我们在代码中遇到了许多与时区相关的问题.

为了充分利用NodaTime,我希望能够从YYYY-MM-DD形式的ASP.NET Web API 2 Web服务发送和接收日期.我已成功将LocalDate正确序列化为YYYY-MM-DD.但是,我无法将日期查询参数反序列化为LocalDate.LocateDate始终是1970-01-01.

这是我当前的原型代码(为清楚起见,删除了一些代码):

PeopleController.cs

[RoutePrefix("api")]
public class PeopleController : ApiController
{
    [Route("people")]
    public LocalDate GetPeopleByBirthday([FromUri]LocalDate birthday)
    {
        return birthday;
    }
}
Run Code Online (Sandbox Code Playgroud)

的Global.asax.cs

public class WebApiApplication : System.Web.HttpApplication
{
    protected void Application_Start()
    {
        // Web API configuration and services
        var formatters = GlobalConfiguration.Configuration.Formatters;
        var jsonFormatter = formatters.JsonFormatter;
        var settings = jsonFormatter.SerializerSettings;
        settings.ConfigureForNodaTime(DateTimeZoneProviders.Tzdb);
        settings.Formatting = Formatting.Indented;
        settings.ContractResolver = new CamelCasePropertyNamesContractResolver();

        GlobalConfiguration.Configure(WebApiConfig.Register);
    }
}
Run Code Online (Sandbox Code Playgroud)

我通过执行Web服务

http://localhost/api/people?birthday=1980-11-20
Run Code Online (Sandbox Code Playgroud)

但是,返回的是1970年1月1日.进入代码我确认birthday设置为1970-01-01.

如何配置序列化,以便将URL中指定的日期作为查询参数(或路径元素)正确地序列化为NodaTime LocalDate?

c# asp.net-web-api nodatime

8
推荐指数
1
解决办法
1394
查看次数

解决方案配置,发布配置文件和web.config转换之间的关系

我在Visual Studio 2013 ASP.NET Web API 2项目中进行了以下设置.

  • Web.Develop.config web转换设置应用程序设置键值
  • Web.Release.config web transform删除应用程序设置键
  • Develop.pubxml映射到Web.Develop.config转换
  • Release.pubxml映射到Web.Release.config转换

每个细节见下文.

<!-- Web.Develop.config (Web Config Transform) -->
<appSettings>
  <add key="ReportInputPath" 
       value="DevelopPath" 
       xdt:Transform="SetAttributes" 
       xdt:Locator="Match(key)" />
  </appSettings>
Run Code Online (Sandbox Code Playgroud)
<!-- Web.Release.config (Web Config Transform) -->
<appSettings xdt:Transform="Remove" />
Run Code Online (Sandbox Code Playgroud)
<!-- **Develop.pubxml (Publish Profile) -->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>x64</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>True</ExcludeApp_Data>
    <publishUrl>Path</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles
    <ExcludeFilesFromDeployment>packages.config</ExcludeFilesFromDeployment>
  </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
<!-- Release.pubxml (Publish Profile) -->
<!-- Contents are identical to Develop.pubxml. 
     This is used to target the Web.Release.Config transform. -->
Run Code Online (Sandbox Code Playgroud)

每当我通过发布发布配置文件发布应用程序时,我的 …

visual-studio publish-profiles web.config-transform

8
推荐指数
1
解决办法
1980
查看次数

如何将Trac票证导出到MS Excel,包括票证说明,格式化?

我需要能够将Trac票据从报表或自定义查询导出到Excel,包括票证说明.问题是描述必须按照wiki语法的定义进行格式化,而不是显示原始文本.

excel trac export

7
推荐指数
2
解决办法
1万
查看次数

何时以及如何在JIRA中使用项目角色而不是群组?

我很难理解一个人何时应该使用组配置JIRA权限以及何时应该使用项目角色.我已经阅读了在线文档,但两者之间的区别似乎很微妙.

一个group看上去很简单.将用户分组到命名存储桶中.group在a中分配一个或多个权限permission scheme,以便为组内的任何用户启用对功能的访问.分配permission scheme给a project以将权限应用于该权限project.

A project role似乎非常相似.它所有上述的不同之处在于,你也可以添加groupsproject roles.似乎a project role还允许项目管理员将他们自己的用户添加到项目中,而不需要系统管理员.

但是,我不确定如何利用这一点.这是我想要实现的一个例子.

  1. 在JIRA中创建了多个项目.
  2. 我们所有的经理,开发人员等都对所有项目拥有相同的权限.
  3. 我们的客户只能访问他们的项目.

我认为实现这一目标的最佳方法是:

  1. 创建一个员工 group,而我补充我们的所有员工.
  2. 创建一个或多个 project roles 我添加了适当的客户端.
  3. 使用员工默认权限方案分配权限. group
  4. 默认权限方案复制到新的项目特定方案,例如,客户方案
  5. 客户端方案分配给客户端特定项目.

但是,似乎我没有利用project role membership.这是如何发挥作用的?

什么是使用JIRA的最佳实践groupsproject roles?两者有什么不同?

jira

7
推荐指数
1
解决办法
8161
查看次数

在R中创建直方图时,正确的参数有什么作用?

我试图找出R中hist函数中的正确参数.遗憾的是,对于没有对我这样的统计数据有深刻理解的人来说,文档是不清楚的.

在线说明的文件是:

正确的; 如果为TRUE,则直方图单元格为右关闭(左开)间隔.

成为右关(或左开)间隔是什么意思?

r histogram

6
推荐指数
1
解决办法
6176
查看次数