我有一个经典的ASP页面 - 用JScript编写 - 使用Scripting.FileSystemObject将文件保存到网络共享 - 而且它不起作用.("没有权限")
ASP页面在IIS下使用Windows身份验证运行,并启用了模拟.
如果我通过CScript.exe在本地运行以下代码块:
var objNet = new ActiveXObject("WScript.Network");
WScript.Echo(objNet.ComputerName);
WScript.Echo(objNet.UserName);
WScript.Echo(objNet.UserDomain);
var fso = new ActiveXObject("Scripting.FileSystemObject");
var path = "\\\\myserver\\my_share\\some_path";
if (fso.FolderExists(path)) {
WScript.Echo("Yes");
} else {
WScript.Echo("No");
}
Run Code Online (Sandbox Code Playgroud)
我得到(预期)输出:
MY_COMPUTER
dylan.beattie
MYDOMAIN
Yes
Run Code Online (Sandbox Code Playgroud)
如果我在.ASP页面中运行相同的代码,则将Response.Write替换为WScript.Echo,我得到以下输出:
MY_COMPUTER
dylan.beattie
MYDOMAIN
No
Run Code Online (Sandbox Code Playgroud)
现在 - 我的理解是WScript.Network对象将检索实际运行代码的线程的当前安全凭证.如果这是正确的 - 那么为什么在同一个域上的同一个用户从CScript.exe到ASP获得不同的结果?如果我的ASP代码的运行为dylan.beattie,那么为什么我不能看到网络共享?如果它不像dylan.beattie 那样运行,为什么WScript.Network会认为它是?
在dt.Select(string)给出错误missing operand时apostrophe符号是的字符串中.
解决这个错误的方法是什么?或如何处理此错误?
我们网站的favicon.ico文件多年来没有变化 - 并且不会很快改变 - 所以我想配置IIS以使用远期缓存过期标头来提供它.我站点的根文件夹中的其余内容是不应缓存的动态页面 - 但据我所知,IIS只允许您在每个文件夹的基础上设置内容到期缓存 - 所以有没有如何为favicon.ico设置缓存标头,而不影响主目录中的其他内容?
我正在为ServiceStack编写一个AuthProvider来对我们自己的OAuth2服务器进行身份验证,并且遇到ServiceStack与我的提供者交互方式的问题.
根据https://groups.google.com/d/msg/servicestack/e3kkh-qRDYs/DF9Y05ibl-MJ
通常有两种扩展方式,如果要提供自己的OAuth实现,则可以使用子类AuthProvider(或实现IAuthProvider)并覆盖包含服务的整个实现的Authenticate()方法.AuthService现在没有自己的实际实现,只是检查Auth Provider .IsAuthorized()方法以查看用户是否已经过身份验证,如果没有,则调用Authenticate()方法.[我的重点]
我现在的整个身份验证提供程序如下所示:
using System;
using ServiceStack.ServiceInterface;
using ServiceStack.ServiceInterface.Auth;
namespace SpotAuth.ResourceServer.Services {
public class SpotlightOAUthProvider : AuthProvider {
public override bool IsAuthorized(IAuthSession session, IOAuthTokens tokens, Auth request = null) {
return (false);
}
public override object Authenticate(IServiceBase authService, IAuthSession session, Auth request) {
// A breakpoint on this line is never reached; the service just returns Unauthorized.
throw new NotImplementedException();
}
}
}
Run Code Online (Sandbox Code Playgroud)
为什么永远不会调用Authenticate方法?上面链接的论坛帖子已有近一年的历史,但我找不到任何暗示此行为已被弃用的内容.
我正在一个概念验证应用程序中实现OAuth2授权代码流 - 所以纯ASP.NET MVC,不使用DotNetOpenAuth或任何其他auth框架 - 我正在摸索如何处理撤销.
我的实现是这样的:
好的,这里的规范在推荐的实现上有点模糊,我认为这归结为当用户撤销授权时会发生什么.
选项1:
刷新令牌是一个包含用户ID,客户端ID和范围的自包含加密字符串.它不存储在任何地方.当访问令牌到期时,客户端向我发送刷新令牌.我解密了这个,并检查我是否仍然在该文件中为该用户/客户端/范围组合提供了有效的授权记录.如果我这样做,我会向他们发送一个新的访问令牌.如果没有,我会返回
invalid_grant错误.在这种情况下,撤消授权意味着将我的数据库中的授权记录标记为已撤销(或仅将其完全删除).没有授权记录 - >刷新令牌将无效 - > FooApp无法再访问数据.
选项2:
我将刷新令牌与client_id,用户ID和该令牌中授权的作用域一起存储在我的数据库中.当我收到刷新令牌的请求时,我找到了refresh_token记录,检查它是否已被撤销等.
在这种情况下,"撤销授权"将通过将我的数据库中的刷新令牌标记为已撤销或通过删除来实现.
另外 - 在这种情况下,一旦交换了令牌,我就看不出有任何理由将授权保留在文件中.如果用户希望知道哪些应用程序可以访问其MyServer数据,那么我只需查询数据库中所有未撤销的刷新令牌和相关范围.
据我所知,任一选项都将满足OAuth2规范的要求,同时允许用户查看和撤销其MyServer帐户上当前活动的所有授权.一个限制是选项1不允许将多个单独的OAuth2令牌集发布到同一用户的同一客户端应用程序 - 但我想不出您想要执行此操作的任何场景.
你会推荐什么?加密令牌和存储授权?使用后删除授权,并存储刷新令牌?还是真的没关系?
我正在运行TeamCity Professional 4.5.3和FinalBuilder Pro 6; TeamCity使用命令行任务运行FinalBuilder项目.
如何让FinalBuilder将消息打印到构建日志中,以便TeamCity捕获它们?该TeamCity的文件是不够清楚,但我无法找到任何方式输出的FinalBuilder所需的值-我需要调用echo的DOS命令,或运行脚本的一个小片段,还是什么?
我们在本地使用Subversion,我们正在开发一个使用Fluent NHibernate的分支的项目,它在Github上托管.
我想它设置,以便单个svn checkout将检索构建项目所需的一切,但保持从github获取HEAD更新的能力.
有什么方法可以从Git存储库中提取代码,好像它是一个svn:external依赖项?我可以将.git文件夹检查到我们的Subversion存储库中,并在需要时运行git fetch,然后svn提交结果吗?
以下C#代码:
using System;
namespace TrimTest {
class Program {
static void Main(string[] args) {
Console.WriteLine(Environment.CommandLine);
Console.WriteLine(Environment.CommandLine.Trim('"'));
Console.ReadKey(false);
}
}
}
Run Code Online (Sandbox Code Playgroud)
产生以下输出:
"D:\Projects\TrimTest\TrimTest\bin\Debug\TrimTest.vshost.exe"
D:\Projects\TrimTest\TrimTest\bin\Debug\TrimTest.vshost.exe"
Run Code Online (Sandbox Code Playgroud)
除非我误读了文档:
从trimChars参数中所有出现的字符后保留的字符串将从当前String对象的开头和结尾删除.如果trimChars为null或为空数组,则会删除空格字符.
不应该从该输出中的第二个字符串中修剪尾部双引号?
我有两个 .NET Web 应用程序在同一台服务器上运行 - sentinel(托管在https://sentinel.mydomain.com/)和fortknox(在http://www.mydomain.com/fortknox)
Sentinel 是一个身份验证“门户”。FortKnox 是一个“概念证明”应用程序,它使用表单身份验证,但将 loginUrl 设置为https://sentinel.mydomain.com/login(以及一个特殊的 Application_EndRequest 处理程序来限定 ReturnUrl)。Sentinel 是使用 MVC 4 和 Razor 用 .NET 4.0 编写的;FortKnox 是使用 .NET 2.0 的 ASP.NET MVC 2。
我正在使用 ASP.NET FormsAuthentication 并将 cookie 域设置为 ,.mydomain.com以便设置 的 cookiesentinel.mydomain.com将与请求一起发送到www.mydomain.com,反之亦然。cookie 部分运行良好- 两个应用程序都获得相同的 .ASPXAUTH 加密表单票证。
问题是,在我们的生产服务器上,fortknox无法解密由哨兵创建的cookie——即使它们具有相同的机器密钥。即使两个应用程序都在同一个物理盒子上运行,它也不起作用。
用户点击 fortknox,他们被重定向到哨兵,他们登录,设置了 cookie,他们被重定向回 fortknox,然后我得到“无法验证数据”:
Exception: Unable to validate data.
at System.Web.Configuration.MachineKeySection.EncryptOrDecryptData(Boolean …Run Code Online (Sandbox Code Playgroud) 我正在ReST API(构建在ServiceStack上)上实现DELETE支持,并想知道在成功删除DELETE后要返回的响应代码.
HTTP将410定义为:
请求的资源在服务器上不再可用,并且不知道转发地址.预计这种情况将被视为永久性的.具有链接编辑功能的客户端应该在用户批准后删除对Request-URI的引用.如果服务器不知道或无法确定条件是否是永久性的,则应该使用状态代码404(未找到).除非另有说明,否则该响应是可缓存的.
现在,如果一个资源刚刚出现DELETE,我可能确实希望应用这些建议中的许多......但是接受的实践似乎正在回归200 OK成功DELETE- 特别是因为该4XX范围应该表示错误条件.
除了HTTP规范中的指南之外,还有哪些令人信服的论据?
.net ×1
ado.net ×1
asp-classic ×1
c# ×1
caching ×1
clr ×1
datatable ×1
favicon ×1
finalbuilder ×1
git ×1
git-svn ×1
github ×1
http-delete ×1
http-headers ×1
iis ×1
machinekey ×1
oauth-2.0 ×1
permissions ×1
rest ×1
servicestack ×1
svn ×1
teamcity ×1
trim ×1
wsh ×1