小编Ste*_*her的帖子

使用C#和IIS 7保护大型下载

这是设置:

  • 1个运行C#app的Web服务器,我的用户(存储在所述服务器上的MySQL数据库中)进行身份验证.

  • 1个运行软件TBD的文件服务器.在过去,我使用lighttpd和mod_secdownload来保护文件服务器上的文件,并且它运行良好(ish).

我想知道是否有办法使用IIS和C#.Net的组合来做到这一点.我的所有其他服务器都运行该组合,如果我可以为文件服务器执行相同操作,它会简化一些事情.踢球者是,托管的文件很大.我见过人们使用小应用程序创建FileStream对象,读入文件并手动创建HTTP响应的示例.这可行,但由于我正在使用500+ MB大小的文件,因此它很慢.我可能会有300名用户同时点击该框,请求文件.那不好.

那么,有人看到这个方法吗?我正在尝试创建一个更透明的系统,如果我的所有服务器都运行相同的软件/硬件,它将使我的生活变得更加简单.提前感谢您提供的任何建议!

.net c# iis download

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

在WCF REST服务中禁用XML示例?

我有一个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垃圾塞满了我的/帮助页?

.net c# rest wcf json

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

既然WebServiceHost2Factory已经死了,我如何从WCF休息服务返回错误文本?

我已经看到几个对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)

.net c# rest wcf

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

使用PHP对ASP.NET成员身份的用户进行身份验证

尝试使用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网站登录时起作用)吗?我尝试换出哈希函数,反转密码/盐的串联,并在打我的计算机时大声喊叫,但这些似乎都没有帮助。

php c# asp.net .net-4.0

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

C#string.Split()匹配两个斜杠?

我有一个用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.谢谢大家一起玩疯狂,抱歉这是一个误导性的问题!

.net c# string

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

仅使用CSS对网格格式的div进行排序

我在排序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)

这似乎在一行中正常工作:

工作得很好

但作为一个网格打破:

problme

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

结果

JsFiddle:http://jsfiddle.net/kQkn9/

我该如何解决这个问题呢?

html css

0
推荐指数
1
解决办法
2936
查看次数

标签 统计

c# ×5

.net ×4

rest ×2

wcf ×2

.net-4.0 ×1

asp.net ×1

css ×1

download ×1

html ×1

iis ×1

json ×1

php ×1

string ×1