我正在尝试学习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) 我正在尝试使用Gulp和Node.Js来流式传输我的进程以缩小和连接CSS/JS文件以进行生产.
这就是我所做的.
npm install -g gulp
NODE_PATH
set 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_modules
到Path
变量在我的系统变量,但它没有考虑它,因为这个变量达到它的最大允许字符的限制.
我从Path
变量中删除了几个路径并添加了;C:\Users\[MyWindowsUserName]\AppData\Roaming\npm\node_modules
但仍然没有工作.
我甚至尝试使用此命令在运行时设置路径
PATH=%PATH%;C:\Users\[MyWindowsUserName]\AppData\Roaming\npm\node_modules
然后运行gulp
,仍然是相同的问题.
我在这里错过了什么?为了让它发挥作用我还需要什么?
在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<>
.
我在SQL Server 2012中遇到了经典的参数嗅探问题.基于一些研究,我发现了围绕这个问题的多种选择.我需要了解的区别这两个选项是OPTION(OPTIMIZE FOR UNKNOWN)
VS OPTION(RECOMPILE)
.
我犹豫是否OPTION(RECOMPILE)
在我的查询结束时使用这个问题,因为它会强制服务器每次都生成一个新的执行计划.如果我经常调用此查询,这将会占用该计算机的CPU.
因此,我使用他最好的解决方案,这两个选项之间的真正区别是什么?
是否会OPTION(OPTIMIZE FOR UNKNOWN)
重复使用缓存而不是每次重新编译?
我在ASP.Net MVC 5 Framework的顶部用c#编写了一个内部网应用程序.我的应用程序配置为通过"Windows身份验证"方法对用户进行身份验证.此应用程序在IIS 8上运行.
我的应用程序使用第三方SDK与我在同一域上运行的另一个程序进行交互.此第三方应用程序允许用户也通过提供的SDK使用Windows身份验证登录.
问题
但是SDK与之通信的服务器始终返回"无效的用户名/密码无效".
经过深入的故障排除后,我发现IIS没有返回正确的用户名.它不是返回"Authenticated User",而是返回正在运行pool app的用户.因此,要解决此问题,我将应用设置更改为以下内容
所以上面的设置返回了正确的用户名,但是它没有将密码委托给SDK.我猜是因为通信滚刀,IIS是保护登录的用户,它是不会让我委托密码到另一个服务/ SDK.
那么我尝试将我的设置更改为以下内容
所以上面阻止我完全登录我的MVC应用程序,它一直在提示我一遍又一遍地提取我的凭据.
为了解决这个问题,我将我的web服务器名称放在我的域控制器中,然后我转到"委派"选项卡并将其更改为"信任此用户以委派任何服务(仅限Kerberos)"
没有这个设置,允许我登录我的MVC应用程序.但这一次,它既没有将用户名或密码委托给SDK.实际上,我获得的用户名是PoolApp用户名而不是经过身份验证的用户.
为了涵盖我的所有基础,我将AppPool用户更改为对SDK所连接的服务器具有Windows身份验证访问权限的实际用户.果然工作得很好,我能够连接到第二个服务.但是,总是委托正在运行的应用程序池的SDK,而不是委托连接/认证的用户名/密码,用户名/密码.
总之,IIS不会出于某种原因将用户名/密码委托给SDK.如何让IIS将连接的用户会话/凭证委派给其他服务?
由于用户正在使用"NTLM"身份验证而不是Kerberos,因此委派也可能失败,但服务器只会在仅Kerberos身份验证时委派"如果是这种情况,我该如何强制用户使用"Kerberos "身份验证而不是"NTLM?
我有一个应用程序 (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 文件播放?
我有一个写在 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)
如何在操作和/或视图中获取路线名称?
我想我终于在笔记本电脑上安装了家园!现在,我试图在浏览器中查看我的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"中编辑文件?
我试图第一次使用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) 我在服务器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) c# ×3
asp.net ×2
asp.net-mvc ×2
javascript ×2
laravel ×2
node.js ×2
php ×2
.htaccess ×1
apache ×1
asp.net-core ×1
audio ×1
express ×1
gulp ×1
homestead ×1
html5-audio ×1
laravel-5 ×1
mod-rewrite ×1
socket.io ×1
sql-server ×1
t-sql ×1
virtualbox ×1
wav ×1