小编Jun*_*ior的帖子

如何使用Entity Framework执行原始SQL查询而不必使用模型?

我正在尝试学习C#ASP.NET MVC 5.我正在尝试使用Entity Framework来完成我所做的一切.

但是,我需要运行原始SQL查询并将结果返回到数组中.

这是我到目前为止所做的.

我创建了我的上下文类,它允许我连接到服务器,它还允许我在运行时更改数据库.

这是我的上下文类

using ScripterEngine.Models;
using System;
using System.Collections.Generic;
using System.Data.Common;
using System.Data.Entity;
using System.Data.Entity.Core.EntityClient;
using System.Data.SqlClient;
using System.Linq;
using System.Web;

namespace ScripterEngine.DataAccessLayer
{
    public class BaseContext : DbContext
    {
        protected string connectionName;
        public DbSet<Campaign> Campaign { get; set; }

        /**
         * Created the connection to the server using the giving connection string name
         * 
         * @param connName
         */
        public BaseContext(string connName = "BaseConnection")
            : base(connName)
        {
            connectionName = connName;
        }

        /**
         * Changes the …
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc entity-framework asp.net-mvc-5

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

'gulp'不被视为内部或外部命令

我正在尝试使用GulpNode.Js来流式传输我的进程以缩小和连接CSS/JS文件以进行生产.

这就是我所做的.

  1. 我在Windows 7机器上安装了Node.Js.
  2. 使用此命令全局安装Gulp npm install -g gulp
  3. 然后我添加了一个名为NODE_PATHset it to 的新User变量%AppData%\npm\node_modules

关闭并重新打开命令行后,我尝试从命令行运行gulp任务(即gulp css).但是这给了我以下错误

'gulp' is not recognized as an internal or external command
Run Code Online (Sandbox Code Playgroud)

我怎样才能让它发挥作用?

当我使用Windows中的搜索栏打开以下路径时, %AppData%\npm\node_modules我看到以下两个文件夹

gulp
gulp-cli
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

我试图添加%AppData%\npm\node_modulesPath变量在我的系统变量,但它没有考虑它,因为这个变量达到它的最大允许字符的限制.

我从Path变量中删除了几个路径并添加了;C:\Users\[MyWindowsUserName]\AppData\Roaming\npm\node_modules

但仍然没有工作.

我甚至尝试使用此命令在运行时设置路径

PATH=%PATH%;C:\Users\[MyWindowsUserName]\AppData\Roaming\npm\node_modules 然后运行gulp,仍然是相同的问题.

我在这里错过了什么?为了让它发挥作用我还需要什么?

node.js gulp

34
推荐指数
5
解决办法
7万
查看次数

如何使用Entity Framework Core 2.1执行SqlQuery?

在Entity Framework 6中,我可以使用以下命令在数据库上执行原始SQL查询:

IEnumerable<string> Contact.Database.SqlQuery<string>("SELECT a.title FROM a JOIN b ON b.Id = a.aId WHERE b.Status = 10");
Run Code Online (Sandbox Code Playgroud)

在一个新项目中,我正在尝试使用Entity Framework Core 2.1.我需要执行原始SQL查询.谷歌搜索时,我可以看到扩展名SqlQuery已更改为FromSql.但是,FromSql只存在于DbSet<>不上DbContext.Database.

FromSql该如何在外面跑DbSet<>?该方法FromSql在数据库对象上不存在DbContext.Database.FromSql<>.

entity-framework entity-framework-6 entity-framework-core

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

OPTION(OPTIMIZE FOR UNKNOWN)和OPTION(RECOMPILE)之间的主要区别是什么?

我在SQL Server 2012中遇到了经典的参数嗅探问题.基于一些研究,我发现了围绕这个问题的多种选择.我需要了解的区别这两个选项是OPTION(OPTIMIZE FOR UNKNOWN)VS OPTION(RECOMPILE).

我犹豫是否OPTION(RECOMPILE)在我的查询结束时使用这个问题,因为它会强制服务器每次都生成一个新的执行计划.如果我经常调用此查询,这将会占用该计算机的CPU.

因此,我使用他最好的解决方案,这两个选项之间的真正区别是什么?

是否会OPTION(OPTIMIZE FOR UNKNOWN)重复使用缓存而不是每次重新编译?

t-sql sql-server parameter-sniffing sql-server-2012

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

如何在IIS 8上运行应用程序时委派Windows身份验证会话?

我在ASP.Net MVC 5 Framework的顶部用c#编写了一个内部网应用程序.我的应用程序配置为通过"Windows身份验证"方法对用户进行身份验证.此应用程序在IIS 8上运行.

我的应用程序使用第三方SDK与我在同一域上运行的另一个程序进行交互.此第三方应用程序允许用户也通过提供的SDK使用Windows身份验证登录.

问题

但是SDK与之通信的服务器始终返回"无效的用户名/密码无效".

经过深入的故障排除后,我发现IIS没有返回正确的用户名.它不是返回"Authenticated User",而是返回正在运行pool app的用户.因此,要解决此问题,我将应用设置更改为以下内容

  • 我禁用了"匿名身份验证"
  • 我启用了"Windows身份验证"
  • 我启用了"ASP.NET模拟",而"ASP.NET模拟"设置设置为"经过身份验证的用户".注意:由于某种原因,这需要"经典"托管管道而不是"集成".
  • 我将AppPool管理的管道设置更改为"Classic"v4
  • 将运行AppPool的用户更改为"网络服务"而不是"ApplicationPoolId"
  • 然后将身份验证提供程序列表保持为"协商"和"NTLM"
  • 最后,我保持启用"Kernal模式身份验证".

所以上面的设置返回了正确的用户名,但是它没有将密码委托给SDK.我猜是因为通信滚刀,IIS是保护登录的用户,它是不会让我委托密码到另一个服务/ SDK.

那么我尝试将我的设置更改为以下内容

  • 我将AppPool管理的管道设置更改为"Integrated"v4.0
  • 将运行AppPool的用户更改为"网络服务"
  • 我禁用了"匿名身份验证"
  • 我启用了"Windows身份验证"
  • 禁用了 "ASP.NET模拟"
  • 身份验证提供程序列表"协商:Kerberos","协商"和"NTLM"
  • 我禁用了"Kernal模式身份验证",因为它不能与"Kerberos"提供程序一起使用.

所以上面阻止我完全登录我的MVC应用程序,它一直在提示我一遍又一遍地提取我的凭据.

为了解决这个问题,我将我的web服务器名称放在我的域控制器中,然后我转到"委派"选项卡并将其更改为"信任此用户以委派任何服务(仅限Kerberos)"

没有这个设置,允许我登录我的MVC应用程序.但这一次,它既没有将用户名或密码委托给SDK.实际上,我获得的用户名是PoolApp用户名而不是经过身份验证的用户.

为了涵盖我的所有基础,我将AppPool用户更改为对SDK所连接的服务器具有Windows身份验证访问权限的实际用户.果然工作得很好,我能够连接到第二个服务.但是,总是委托正在运行的应用程序池的SDK,而不是委托连接/认证的用户名/密码,用户名/密码.

总之,IIS不会出于某种原因将用户名/密码委托给SDK.如何让IIS将连接的用户会话/凭证委派给其他服务?

由于用户正在使用"NTLM"身份验证而不是Kerberos,因此委派也可能失败,但服务器只会在仅Kerberos身份验证时委派"如果是这种情况,我该如何强制用户使用"Kerberos "身份验证而不是"NTLM?

c# asp.net asp.net-mvc windows-authentication asp.net-mvc-5

12
推荐指数
1
解决办法
1630
查看次数

如何使用 Javascript 从外部 url 播放音频文件?

我有一个应用程序 (A),它向另一个应用程序 (B) 发出 ajax 请求以获取波形声音文件的链接。然后,我想使用该链接直接从我的应用程序 (A) 播放该声音文件。

我尝试创建一个新audio标签,但在控制台中出现以下错误。

在 Chrome 中

无法播放....NotSupportedError:无法加载,因为找不到支持的源。

在火狐中

无法播放....NotSupportedError: src 属性或分配的媒体提供程序对象指示的媒体资源不合适。

这是我的回调方法,它是在 ajax 请求与来自我的应用程序 (B) 的链接一起返回后触发的。

function playAudio(data) {
    if(!data || !data.DownloadUrl) {
        return;
    }

    var audio = new Audio(data.DownloadUrl);  
    audio.type = 'audio/wav';

    var playPromise = audio.play();

    if (playPromise !== undefined) {
        playPromise.then(function () {
            console.log('Playing....');
        }).catch(function (error) {
            console.log('Failed to play....' + error);
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能成功,让这个 wav 文件播放?

javascript audio wav html5-audio

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

如何使用 ASP.NET Core 获取当前路由名称?

我有一个写在 ASP.NET Core 2.2 框架之上的应用程序。

我有以下控制器

public class TestController : Controller
{
    [Route("some-parameter-3/{name}/{id:int}/{page:int?}", Name = "SomeRoute3Name")]
    [Route("some-parameter-2/{name}/{id:int}/{page:int?}", Name = "SomeRoute2Name")]
    [Route("some-parameter-1/{name}/{id:int}/{page:int?}", Name = "SomeRoute1Name")]
    public ActionResult Act(ActVM viewModel)
    {
        // switch the logic based on the route name

        return View(viewModel);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何在操作和/或视图中获取路线名称?

c# asp.net-core asp.net-core-routing asp.net-core-2.2

11
推荐指数
2
解决办法
8458
查看次数

安装Homestead后,我在浏览器中显示"未指定输入文件".我如何访问我的laravel项目

我想我终于在笔记本电脑上安装了家园!现在,我试图在浏览器中查看我的laravel项目.

当我在浏览器中打开"dev.app"时,我收到一条消息,说"没有指定输入文件".我认为这意味着我的家园正在工作,但laravel项目不存在/设置.

我在本地笔记本电脑上创建了一个名为Projects的文件夹(即〜/ Projects).然后从里面我执行了这个命令

laravel new dev

但我仍然在浏览器中收到相同的错误消息,即"未指定输入文件".我也试图打开这个链接"dev.app"/ dev"但我仍然得到同样的消息.

我做错了什么?

这是我的Homestead.yaml文件的内容

ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

folders:
    - map: ~/Projects
      to: /home/vagrant/Code

sites:
    - map: dev.app
      to: /home/vagrant/Code/Laravel/public

databases:
    - homestead

variables:
    - key: APP_ENV
      value: local
Run Code Online (Sandbox Code Playgroud)

另外,当我按顺序执行以下2个命令时

cd ~/Projects
ls
Run Code Online (Sandbox Code Playgroud)

我看到以下目录dev homestead

当我去dev.app时,我该怎么做才能看到我的项目?我是否需要从我的Ubuntu VM做任何事情,或者我应该能够直接在我的笔记本电脑上的〜\ Projects\dev"中编辑文件?

virtualbox virtual-machine laravel laravel-5 homestead

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

如何修复Laravel 5.1 - 404 Not Found?

我试图第一次使用Laravel 5.1.我能够安装它并https://sub.example.com/laravel/public/显示应该是什么.但是,我创建的视图给了我404错误页面未找到.

这是我到目前为止所做的:

我创建了一个控制器 laravel\app\Http\controllers\Authors.php

这是Authors.php文件背后的代码

<?php

class Authors_Controller extends Base_Controller {

    public $restful = true;

    public function get_index() {
        return View::make('authors.index')
            ->with('title', 'Authors and Books')
            ->with('authors', Author::order_by('name')->get());
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个视图 laravel\resources\views\Authors\index.blade.php

这是index.blade.php文件背后的代码

@layout('layouts.default')


@section('content')
    Hello, this is a test
@endsection
Run Code Online (Sandbox Code Playgroud)

然后我创建了一个布局 laravel\resources\views\layouts\default.blade.php

这是default.blade.php文件背后的代码

<!DOCTYPE html>
<html>
    <head>
        <title>{{ $title }}</title>
    </head>
    <body>

    @if(Session::has('message'))
        <p style="color: green;">{{ Session::get('message') }}</p>
    @endif

    @yield('content')
    Hello - My first test
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

最后我创建了一条路线 laravel\app\Http\routes.php

<?php
Route::get('/', …
Run Code Online (Sandbox Code Playgroud)

php apache .htaccess mod-rewrite laravel

9
推荐指数
2
解决办法
4万
查看次数

如何在node.js服务器上的PHP Web服务器和Socket.io之间创建握手?

我在服务器10.0.4.18上的端口8020上运行了node.js 4.0上的websocket.我使用socket.io v1.3,express和express-session实现了我的websocket.

项目定义

我需要能够在socket.io中为从PHP应用程序连接到它的每个用户创建一个会话.在用户发送第一个HTTP请求之后,我将使用将从PHP传递到socket.io以及HTTP请求的令牌对它们进行身份验证.

用户通过身份验证后,我需要在socket.io会话中保存一些个人数据,以便以后重用.每次用户刷新PHP应用程序时,socket.io都需要知道已创建的会话数据.

问题

每次用户重新加载/刷新PHP页面"他/她从哪里连接"时,会话数据都会丢失.服务器无法知道该连接属于先前创建的会话XYZ.

我不确定如何在PHP和node.js之间创建握手,其中两个服务器可以交换唯一数据以将socket.io会话绑定到.

仔细看看这个问题

我在浏览器中打开了这个链接https://10.0.4.18:8020/set/MikeA."这根据路由代码直接从node.js为我创建了一个会话"

然后我使用PHP连接到websocket,现在我可以看到会话没有问题!我能够在浏览器中打开多个选项卡,并且会按预期进行相同的会话.

它这次工作的原因是因为网址https://10.0.4.18:8020/set/MikeA建立了一个会话并将其绑定在我的浏览器和会话之间,从那里我能够从socket读取/写入我的会话.我使用express-socket.io-session包https://www.npmjs.com/package/express-socket.io-session.

但是如果我不手动使用url创建会话,则会话仅适用于一个页面加载.每次重新加载页面时,会话都会被破坏,就像它从未存在过一样!

当从socket.io连接时,我需要通过https://10.0.4.18:8020/set/MikeA连接到websocket时开发相同的行为.

如何在PHP服务器和socket.io之间建立握手,其中两个服务器可以在每次重新加载PHP页面或打开新的浏览器选项卡时将会话数据绑定到正确的用户?

这是我的websocket代码

var app = require('express')(),
    https = require('https'),
    fs = require('fs'),
    session = require('express-session'),
    sharedsession = require("express-socket.io-session"),
    fileStore = require('session-file-store')(session),
    base64url = require('base64url'),
    cookieParser = require("cookie-parser"),
    env = require('./modules/config');


var server = https.createServer(
    {
        key: fs.readFileSync('certs/key.pem'),
        cert: fs.readFileSync('certs/cert.pem')
    }, app).listen(env.socket.port, env.socket.host, function () {
    console.log('\033[2J');
    console.log('Websocket is running at https://%s:%s', server.address().address, server.address().port);
});

var io …
Run Code Online (Sandbox Code Playgroud)

javascript php node.js express socket.io

9
推荐指数
1
解决办法
2289
查看次数