这是设置:
1个运行C#app的Web服务器,我的用户(存储在所述服务器上的MySQL数据库中)进行身份验证.
1个运行软件TBD的文件服务器.在过去,我使用lighttpd和mod_secdownload来保护文件服务器上的文件,并且它运行良好(ish).
我想知道是否有办法使用IIS和C#.Net的组合来做到这一点.我的所有其他服务器都运行该组合,如果我可以为文件服务器执行相同操作,它会简化一些事情.踢球者是,托管的文件很大.我见过人们使用小应用程序创建FileStream对象,读入文件并手动创建HTTP响应的示例.这可行,但由于我正在使用500+ MB大小的文件,因此它很慢.我可能会有300名用户同时点击该框,请求文件.那不好.
那么,有人看到这个方法吗?我正在尝试创建一个更透明的系统,如果我的所有服务器都运行相同的软件/硬件,它将使我的生活变得更加简单.提前感谢您提供的任何建议!
我有一个REST服务,有几个客户端使用它,据我所知,只有在执行POST/PUT时才接受JSON(并且只在所有调用中返回JSON).问题是在服务/帮助页面上,它显示了JSON和XML的示例.有没有办法删除所有额外的XML垃圾,以免混淆用户(因为,再次,服务只接受JSON),只在/帮助页面上显示JSON示例?这是我的Web.config:
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="false" defaultOutgoingResponseFormat="Json" />
</webHttpEndpoint>
</standardEndpoints>
Run Code Online (Sandbox Code Playgroud)
我的每个GetGets/WebInvokes都以JSON作为格式定义,例如:
[WebInvoke(UriTemplate = "/sample", BodyStyle = WebMessageBodyStyle.Bare, Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
Run Code Online (Sandbox Code Playgroud)
那么,有没有什么我可以做让服务知道它是JSON 只和删除自动根XML垃圾塞满了我的/帮助页?
我已经看到几个对WebServiceHost2Factory的引用作为用于有效处理WCF Rest服务中的错误的类.显然,在该类中,我只需要抛出一个WebProtocolException,并且响应的主体将包含相关信息.
这堂课现在似乎已经失宠了..NET 4堆栈中是否存在替换?
我想弄清楚如果出现问题,如何在POST操作的响应体中返回错误文本.关键问题是在所有*的旁边
例:
[Description("Performs a full enroll and activation of the member into the Loyalty program")]
[OperationContract]
[WebInvoke(Method = "POST", UriTemplate = "/fullenroll/{clientDeviceId}",
BodyStyle = WebMessageBodyStyle.Bare,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
public MemberInfo FullEnroll(string clientDeviceId, FullEnrollmentRequest request)
{
Log.DebugFormat("FullEnroll. ClientDeviceId: {0}, Request:{1}", clientDeviceId, request);
MemberInfo ret = null;
try
{
//Do stuff
}
catch (FaultException<LoyaltyException> fex)
{
Log.ErrorFormat("[loyalty full enroll] Caught faultexception attempting to full enroll. Message: {0}, Reason: {1}, Data: {2}", …Run Code Online (Sandbox Code Playgroud) 尝试使用PHP针对现有ASP.NET成员资格数据库对用户进行身份验证时遇到一些问题。我搜索了网络,发现的现有答案似乎不适用于我。即:
public static function Hash($password, $salt)
{
$decodedSalt = base64_decode($salt);
$utf = mb_convert_encoding($password, 'UTF-16LE', 'UTF-8');
return base64_encode(sha1($decodedSalt.$utf, true));
}
Run Code Online (Sandbox Code Playgroud)
我认为问题的部分原因在于密码散列实际上不是使用SHA-1计算的,因为数据库中的值是44个字符长,base64编码的字符串(这意味着输入可能是256位长)。我尝试使用SHA-256代替SHA-1,但无济于事。我在web.config中找不到会进一步加重哈希值的机器密钥,并且当我在本地或在生产服务器上运行时,ASP.NET站点会生成相同的哈希值,因此我不知道为什么它们没有不匹配。
Web.config成员资格提供程序:
<add connectionStringName="MySqlMembershipConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="true" passwordFormat="Hashed" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" autogenerateschema="true" name="MySqlMembershipProvider" type="MySql.Web.Security.MySQLMembershipProvider, mysql.web" />
Run Code Online (Sandbox Code Playgroud)
例如密码应工作:
$salt = 'Mu1tp8XzfKl8dSTVAZm44A=='; // Straight from the DB
$password = 'testing';
$expectedHash = 'TQN7m8OWIyBOKVwzegWSUBVq7o7+KWFBc46J+B77mLw=' // Straight from the DB
// When using the above Hash function with SHA-256 instead of SHA-1
$generatedHash = 'rpmTmtBfWoJz71ooQGQUIIyQJKd99qhYxMUI1yda0qE='
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?知道为什么我的哈希值与数据库中存储的哈希值不匹配(以及为什么/如何在通过ASP.NET网站登录时起作用)吗?我尝试换出哈希函数,反转密码/盐的串联,并在打我的计算机时大声喊叫,但这些似乎都没有帮助。
我有一个用C#编写的.NET 3.5 Web应用程序做一些包含文件路径的URL重写,我遇到了问题.当我调用string.Split('/')它时,它匹配'/'和'\'字符.那......应该发生吗?我假设它会注意到ASCII值不同并跳过它,但看起来我错了.
// url = 'someserver.com/user/token/files\subdir\file.jpg
string[] buffer = url.Split('/');
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了一个string[]包含6个元素......这看起来很反直.有没有办法强制Split()只匹配正斜杠?现在我很幸运,因为违规的斜杠位于URL的末尾,我可以将其余的元素连接起来string[],但这对我们正在做的事情来说是很多工作,而不是一个很好的解决方案.潜在的问题.
有没有人遇到过这个?有一个简单的答案?我很感激!
更多代码:
url = HttpContext.Current.Request.Path.Replace("http://", "");
string[] buffer = url.Split('/');
Run Code Online (Sandbox Code Playgroud)
事实证明,Request.Path和Request.RawUrl都在改变我的斜线,这很荒谬.所以,是时候研究一下了,并弄清楚如何从不破坏格式的函数中获取URL.谢谢大家一起玩疯狂,抱歉这是一个误导性的问题!
我在排序div时遇到问题,我有两种类型 a, b
a - should always be at the front (all a types)
b - should be following all a types.
Run Code Online (Sandbox Code Playgroud)
HTML:
<div class="" style="">
<div class="a">a</div>
<div class="a">a</div>
<div class="b">b</div>
<div class="a">a</div>
</div>
Run Code Online (Sandbox Code Playgroud)
CSS:
.a, .b {
display:inline-block;
width:50px;
height:50px;
padding:15px;
margin:5px;
}
.a {
float:left;
background-color: blue;
}
.b { background-color: red; }
Run Code Online (Sandbox Code Playgroud)
这似乎在一行中正常工作:

但作为一个网格打破:

期望的结果(盒子的数量是无关紧要的):

JsFiddle:http://jsfiddle.net/kQkn9/
我该如何解决这个问题呢?