小编luk*_*egf的帖子

使用XPath选择XML节点时如何忽略命名空间

我必须解析一个如下所示的XML文档:

 <?xml version="1.0" encoding="UTF-8" ?> 
 <m:OASISReport xmlns:m="http://oasissta.caiso.com/mrtu-oasis/xsd/OASISReport.xsd" 
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://oasissta.caiso.com/mrtu-oasis/xsd/OASISReport.xsd http://oasissta.caiso.com/mrtu-oasis/xsd/OASISReport.xsd">
  <m:MessagePayload>
   <m:RTO>
    <m:name>CAISO</m:name> 
    <m:REPORT_ITEM>
     <m:REPORT_HEADER>
      <m:SYSTEM>OASIS</m:SYSTEM> 
      <m:TZ>PPT</m:TZ> 
      <m:REPORT>AS_RESULTS</m:REPORT> 
      <m:MKT_TYPE>HASP</m:MKT_TYPE> 
      <m:UOM>MW</m:UOM> 
      <m:INTERVAL>ENDING</m:INTERVAL> 
      <m:SEC_PER_INTERVAL>3600</m:SEC_PER_INTERVAL> 
     </m:REPORT_HEADER>
     <m:REPORT_DATA>
      <m:DATA_ITEM>NS_PROC_MW</m:DATA_ITEM> 
      <m:RESOURCE_NAME>AS_SP26_EXP</m:RESOURCE_NAME> 
      <m:OPR_DATE>2010-11-17</m:OPR_DATE> 
      <m:INTERVAL_NUM>1</m:INTERVAL_NUM> 
      <m:VALUE>0</m:VALUE> 
     </m:REPORT_DATA>
Run Code Online (Sandbox Code Playgroud)

问题是名称空间"http://oasissta.caiso.com/mrtu-oasis/xsd/OASISReport.xsd"有时可能会有所不同.我想完全忽略它,只是从标记MessagePayload下游获取我的数据.

我到目前为止使用的代码是:

String[] namespaces = new String[1];
  String[] namespaceAliases = new String[1];

  namespaceAliases[0] = "ns0";
  namespaces[0] = "http://oasissta.caiso.com/mrtu-oasis/xsd/OASISReport.xsd";

  File inputFile = new File(inputFileName);

  Map namespaceURIs = new HashMap();

  // This query will return all of the ASR records.
  String xPathExpression = "/ns0:OASISReport
                             /ns0:MessagePayload
                              /ns0:RTO
                               /ns0:REPORT_ITEM
                                /ns0:REPORT_DATA";
  xPathExpression += "|/ns0:OASISReport
                        /ns0:MessagePayload …
Run Code Online (Sandbox Code Playgroud)

xml xpath namespaces xml-namespaces

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

文件的目录查找失败,出现操作系统错误3(系统找不到指定的路径.)

我试图从一个SQL服务器()重新创建一个数据库(MyDB )到另一个(目标).位于我的本地计算机上,是SQL Server 2014. 目标位于远程计算机上,它是SQL Server 2012.以下是我采取的步骤:

  1. 在我的本地机器上,我转到SQL Server Management studio,右键单击MyDB,然后转到Tasks - > Generate Scripts.
    1. 在那里我选择"脚本整个数据库和所有数据库对象".
    2. 我单击Next并在下一页的Advanced下,选择"Schema and data".
    3. 这会生成一个包含MyDB定义的SQL文件(scripts.sql).
    4. 然后我使用以下osql命令在Target上重新创建数据库:

osql -S target -d master -E -i scripts.sql -o output.log

  1. 执行完成后,我在日志文件"output.log"中收到此错误:

1> 2> 1> 2> 3> 4> 5> 6> 7> 8>消息5133,级别16,状态1,服务器目标,行2目录查找文件"C:\ Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\DATA\MyDB.mdf"因操作系统错误3而失败(系统找不到指定的路径.).消息1802,级别16,状态1,服务器目标,行2 CREATE DATABASE失败.无法创建列出的某些文件名.检查相关错误.1> 2>消息5011,级别14,状态5,服务器目标,行1用户无权更改数据库'MyDB',数据库不存在,或者数据库未处于允许访问检查的状态.消息5069,级别16,状态1,服务器目标,行1 ALTER DATABASE语句失败.

以下是"scripts.sql"的前几行:

USE [master]
GO
/****** Object:  Database [MyDB]    Script Date: 4/12/2016 4:30:20 PM ******/
CREATE DATABASE [MyDB]
 CONTAINMENT = NONE …
Run Code Online (Sandbox Code Playgroud)

sql database sql-server migration osql

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

React <div>不能作为<tr>警告的子项出现

我在React组件中收到以下警告:

在此输入图像描述

相关代码如下:

import React, { PropTypes } from 'react';
import { Checkbox } from 'react-bootstrap'; 

const MyComponent = (params) => {

function onSelect(event) {
    params.onSelect(event, params.data.id);
}

return (
    <tr key={params.data.id}>
        {params.isSelectable ? (
            <Checkbox onChange={onSelect}>
                <td>{params.data.firstName}&nbsp;</td>
                <td>{params.data.lastName}&nbsp;</td>
            </Checkbox>
        ) : (
            <div>
                <td>{params.data.firstName}&nbsp;</td>
                <td>{params.data.lastName}&nbsp;</td>
            </div>
        )}
    </tr>
);
Run Code Online (Sandbox Code Playgroud)

};

如果我删除div标签,我会收到以下错误:

相邻的JSX元素必须包装在一个封闭的标签中

我是React的新手,所以我不太清楚这里发生了什么.有什么问题,我该如何解决?

更新:我的React版本是15.3.2.

html javascript reactjs

6
推荐指数
2
解决办法
7500
查看次数

Angular 1和Angular 2混合应用程序路由问题(角度组件不显示)

我有一个Angular 1和Angular 2混合应用程序,它使用以下指南设置,从AngularJS升级和将Angular 1应用程序迁移到Angular 2.我的根组件看起来像这样:

import { NgModule, Component } from '@angular/core';
import { RouterModule, UrlHandlingStrategy } from '@angular/router';
import { BrowserModule } from '@angular/platform-browser';
import { UpgradeModule } from '@angular/upgrade/static';
import { RouterUpgradeInitializer } from '@angular/router/upgrade';
import { MyModule } from './Mymodule/my-module';

export class Ng1Ng2UrlHandlingStrategy implements UrlHandlingStrategy {
    shouldProcessUrl(url: any) {
        return url.toString().startsWith("/Mymodule");
    }

    extract(url: any) {
        return url;
    }

    merge(url: any, whole: any) {
        return url;
    }
}

@Component({
    selector: 'root-component',
    template: `
    <router-outlet></router-outlet> …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs angular2-routing angular angular-hybrid

5
推荐指数
1
解决办法
2441
查看次数

尝试协商时出现 SignalR 404 错误

所以我对 SignalR 很陌生,事实上我现在只使用了几天。无论如何,当我的应用程序首次启动时,我收到以下错误:

SignalR 协商错误

相关应用程序的代码位于两个项目中,一个 Web API 和一个单页应用程序 (SPA)。第一个是我的后端代码 (C#),第二个是我的客户端代码 (AngularJS)。我认为问题可能是由于相关项目在不同的端口上运行。我的 SignalR 集线器所在的 Web API 位于端口 60161 上,SPA 位于 60813 上。我的集线器声明如下:

public class ReportHub : Hub
{
    public void SendReportProgress(IList<ReportProgress> reportProgress)
    {                
        this.Clients.All.broadcastReportProgress(reportProgress);
    }

    public override Task OnConnected()
    {
        this.Clients.All.newConnection();

        return base.OnConnected();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在我的 Web API 的 Startup.cs 文件中,我像这样初始化 SignalR:

public void Configuration(IAppBuilder app)
{           
    HttpConfiguration config = new HttpConfiguration();
    config.Services.Replace(typeof(IHttpControllerActivator), new NinjectFactory());
    config.MessageHandlers.Add(new MessageHandler());

    //set up OAuth and Cors
    this.ConfigureOAuth(app);
    config.EnableCors();
    config.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;

    // Setting up SignalR
    app.Map("/signalr", …
Run Code Online (Sandbox Code Playgroud)

c# asp.net signalr angularjs signalr-hub

4
推荐指数
1
解决办法
3974
查看次数

MS 测试“找不到方法:System.String”错误

最近我的一些 MS Test 单元测试已经停止工作。我在测试中没有改变任何东西。我得到的错误如下:

测试失败 - [文件名]

消息:找不到方法:'System.String Microsoft.VisualStudio.TestTools.UnitTesting.TestResult.get_TestContextMessages()'。

在“参考”下,在我的单元测试项目(在 Visual Studio 中)中,我有以下内容:

Microsoft.VisualStudio.TestPlatform.MSTest.TestAdapter

Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices

Microsoft.VisualStudio.TestPlatform.MSTestAdapter.PlatformServices.Interface

Microsoft.VisualStudio.TestPlatform.TestFramework

Microsoft.VisualStudio.TestPlatform.TestFramework.Extensions

起订量

Ploeh.AutoFixture

Ploeh.AutoFixture.AutoMoq

有人知道这里有什么问题吗?

unit-testing mstest

4
推荐指数
1
解决办法
2642
查看次数

SignalR 错误“无法建立连接,因为目标机器主动拒绝它”

我有一个带有 AngularJS 前端(客户端)和一个 Web API 后端(服务器)的单页应用程序 (SPA)。我还使用 SignalR 在客户端和服务器之间进行消息传递。在我的开发机器上一切正常(使用 IIS Express),但是当部署到服务器进行测试时,我在尝试与集线器建立连接时收到以下错误:

抛出异常:System.Net.Http.HttpRequestException:发送请求时出错。---> System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: 无法建立连接,因为目标机器在 System.Net 127.0.0.1:60161 主动拒绝它.Sockets.Socket.EndConnect(IAsyncResult asyncResult) at System.Net.ServicePoint.ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket& socket, IPAddress& address, ConnectSocketState state, IAsyncResult asyncResult, Exception& exception) ---内部异常结束堆栈跟踪 --- 在 System.Net.HttpWebRequest.EndGetResponse(IAsyncResult asyncResult) 在 System.Net.Http.HttpClientHandler。

即使它从客户端成功连接到 SignalR 集线器:

SignalR 集线器连接

我的客户端 SignalR 代码的相关部分是这样的(在 AnglarJS 服务中):

    // Setting up the SignalR hub
    var hub = new Hub("reportHub", {
        listeners: {
            'newConnection': function (id) {
            },
            'broadcastReportProgress': function …
Run Code Online (Sandbox Code Playgroud)

c# asp.net signalr asp.net-web-api angularjs

3
推荐指数
1
解决办法
4387
查看次数

结合AngularJS / .NET Web API应用程序的RabbitMQ架构

因此,我有一个SPA(单页应用程序),其中AngularJS作为前端,.NET Web API作为后端(C#)。我需要根据某些用户操作来生成SQL Server Reporting Services(SSRS)报告,即选择一些数据并按一个按钮。这是我现有架构的粗略插图:

FRONT END                 BACK END                  SSRS Report
==========                =========                 ===========
**AngularJS Web page**-->**.NET Web API controller**-->**Intermediary class (passes arguments to report)** -->**Generate report and save to file**
Run Code Online (Sandbox Code Playgroud)

这行得通,但问题是在生成报告时,应用程序必须坐在那里等待它们完成,同时用户无法执行任何操作。如果要创建许多报告(例如100多个),则可能要花一两分钟以上的时间,这对我来说是不可接受的。

因此,这就是RabbitMQ的用处。我的想法是让.NET Web API控制器将消息发送到服务器,一旦服务器接收到消息,就会对上面的中间类进行调用,从而生成报告,然后响应发送回客户端,让他们知道已生成报告。我认为我需要为此使用RPC方案,因此我已经在RabbitMQ网站上完成了相应的教程,而且看起来很简单。

我不知道的是,这是我的问题,是如何从.NET Web API应用程序启动客户端和服务器。坦白说,我现在有点迷茫,因为这是我第一次体验任何消息,并且在架构方面我不确定如何处理它。如果我能详细了解整个工作原理,则可以从那里进行编码,但是到现在为止,我很难想象如何构造应用程序。

所以,问题:

  1. 如何从.NET Web API控制器启动RabbitMQ服务器和客户端?服务器和客户端应该是类库还是控制台应用程序,还是完全其他?

  2. 我正在构想的体系结构可以工作还是有更好的方法?

  3. 任何有关如何实现我要达到的目标的一般建议将不胜感激。

c# rabbitmq reporting-services asp.net-web-api

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

如何在ASP.NET Web API应用程序中从另一个方法调用一个异步方法

所以,我有在ASP.NET Web API应用程序与异步方法,下面的程序流程:一个API控制器调用异步方法(我们称之为asyncMethod1),这需要从第二异步方法的东西(我们称之为asyncMethod2).API控制器并不真正需要知道asyncMethod1何时完成,尽管为了给用户提供反馈会很好.另一方面,asyncMethod1确实需要知道asyncMethod2何时完成.

这是相关代码:

public class MyController : ApiController
{
    private CustomClass customClass;

    public IHttpActionResult WorkMethod(TestObject testObject)
    {
        Debug.WriteLine("WorkMethod - before calling asyncMethod1");

        Task.Run(async () => await this.asyncMethod1(testObject)).Wait(); // ERROR HERE

        Debug.WriteLine("WorkMethod - after calling asyncMethod1");

        return Ok();
    }

    private async Task asyncMethod1(TestObject testObject)
    {
        Debug.WriteLine("asyncMethod1 - before calling asyncMethod2");

        Dictionary<string, string> x = await this.asyncMethod2(testObject);

        Debug.WriteLine("asyncMethod1 - after calling asyncMethod2");

        try
        {
            using (Task<IList<TestResponse>> testTask = customClass.DoAsyncWork1(x))
            {
                IList<TestResponse> response = await testTask;

                // Do …
Run Code Online (Sandbox Code Playgroud)

c# asp.net async-await asp.net-web-api

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