小编Zac*_*eth的帖子

ServiceStack.Net Redis:存储相关对象与相关对象ID

我的团队决定通过ServiceStack.net Redis Client与Redis合作,作为我们正在开发的新的高容量网站的底层存储库.我不确定在哪里查找这个问题的文档(对于一般的Redis文档或特定的ServiceStack.Net文档或两者) - 实际上是否有关于如何通过ServiceStack.Net实现Redis的文档的权威来源,包括您需要了解Redis概念和ServiceStack.Net概念,还是需要分别整合两个方面的文档才能全面了解?

我正在努力解决如何在模型的对象图中存储相关对象.这是一个我想要使用的简单场景:

系统中有两个对象:UserFeed.在RDBMS术语中,这两个对象具有一对多关系,即a User具有Feed对象集合,而feed只能属于一个User.Redis将始终通过用户访问Feed,但有时我们会希望通过Feed实例访问用户.

所以我的问题是我们是应该将相关对象存储为属性还是应该存储Id相关对象的值?为了显示:

方法A:

public class User
{
    public User()
    {
        Feeds = new List<Feed>();
    }

    public int Id { get; set; }

    public List<Feed> Feeds { get; set; }

    // Other properties
}

public class Feed
{
    public long Id { get; set; }

    public User User { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

方法B:

public class User
{
    public User()
    { …
Run Code Online (Sandbox Code Playgroud)

.net c# redis servicestack

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

ASP.Net MVC输出缓存:指令或配置设置配置文件必须指定'varyByParam'属性

我在没有输入参数的ActionResult方法上应用OutputCache属性后遇到上述错误消息 - 为什么我会在这种情况下使用VaryByParams?这是ASP.Net MVC中的错误还是有一种方法可以在不设置此属性的情况下使用OutputCache?

我的大问题是,如果我必须使用VaryByParams,如果我没有要缓存的参数,我应该为值输入什么?

asp.net-mvc outputcache

13
推荐指数
1
解决办法
5206
查看次数

如何使用现有路由值停止ASP.Net MVC Html.ActionLink?

我正在研究的网站有一些相当复杂的路由结构,我们在使用路由引擎来构建URL时遇到了一些困难,就像我们需要构建它们一样.

我们有一个搜索结果页面,它使用基于RegEx的模式匹配将几个变量分组到一个路径段中(即"www.host.com/{structuralParameters}"可以是:"www.host.com/variableA-variableB- variableC" - 其中变量A到C都是可选的).经过一番工作,这对我们很有用.

我们遇到的问题解决了ActionLink方法令人讨厌的特性:如果指向相同的控制器/操作,它将保留现有的路由值,无论您是否需要它们.我们更愿意控制链接的外观,在某些情况下,不能保留现有参数.一个例子是我们网站的主导航导向没有设置参数的搜索结果页面 - 如果您愿意,可以使用默认搜索页面.我说这是一个烦人的功能,因为它是一个罕见的ASP.Net MVC框架实例,似乎在没有明显扩展点的情况下决定实现 - 我们宁愿不在我们的母版页中创建自定义ActionLink代码来编写简单的导航链接!

我已经看到有人说你需要明确地将这些参数设置为空字符串,但是当我们尝试这个时它只是将参数从路由值更改为查询字符串参数.对我来说似乎不应该要求我们明确地将我们未明确传递的值作为参数传递给ActionLink方法,但如果这是我们唯一的选项,我们将使用它.但是,目前如果它在查询字符串中显示,那么将参数直接放入路径对我们来说是无用的.

我知道我们的路由结构加剧了这个问题 - 如果我们使用更简单的方法(即www.host.com/variableA/variableB/variableC),我们可能不会有任何问题,但我们的URL结构不可协商 - 它是旨在满足与可用性,SEO和链接/内容共享相关的非常具体的需求.

我们如何使用Html.ActionLink生成页面链接而不会回退当前路径数据(或者,如果可能,需要明确排除路径段),即使这些链接导致相同的操作方法?

如果我们确实需要明确排除路径段,我们如何防止该方法将路由呈现为查询字符串参数?

这个看似很小的问题给我们带来了惊人的悲痛,我将感谢您解决它的任何帮助.

编辑:根据LukLed的要求,这是一个示例ActionLink调用:

// I've made it generic, but this should call the Search action of the 
// ItemController, the text and title attribute should say "Link Text" but there
// should be no parameters - or maybe just the defaults, depending on the route.
// 
// Assume that this can be called from *any* page but should not be …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc routing actionlink

13
推荐指数
1
解决办法
8690
查看次数

带有IN子句值列表的TSQL变量

我想在select语句中使用"CASE WHEN ... THEN 1 ELSE 0 END"的句子.棘手的部分是我需要它与"值IN @List"一起使用.

如果我硬编码列表它工作正常 - 它表现良好:

SELECT
       CASE WHEN t.column_a IN ( 'value a', 'value b' ) THEN 1 ELSE 0 END AS priority
      , t.column_b
      , t.column_c
  FROM
       table AS t
 ORDER BY
       priority DESC
Run Code Online (Sandbox Code Playgroud)

我想做的是:

-- @AvailableValues would be a list (array) of strings.
DECLARE
        @AvailableValues ???

 SELECT
        @AvailableValues = ???
   FROM
        lookup_table

 SELECT
        CASE WHEN t.column_a IN @AvailableValues THEN 1 ELSE 0 END AS priority
      , t.column_b
      , t.column_c
   FROM
        table …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server

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

SignalR JS客户端方法未被调用

我无法获得SignalR服务器端Hub代码来调用JS客户端方法.反过来工作正常 - 所以当我的客户端向服务器发送消息时,它按预期交付.我一直都非常小心避免明显的陷阱,但我想我仍然会忽略一些东西.这是我的代码:

来自MessageHub.cs:

public bool SendMessage( ClientMessage message )
{
    ...
    Clients.All.addMessage("my message");
    ...
}
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

$.connection.hub.start()
    .done(function () {
        messageHub = $.connection.message;

        // addMessage is never invoked.
        messageHub.client.addMessage = function (message) {
            alert('message added');
        };

        /* // I tried this based on some sample code but still not invoked.
        messageHub.addMessage = function (message) {
            alert('message added');
        };
        */

        // This works as expected.
        messageHub.server.registerUser(userId);
        ...
    });
Run Code Online (Sandbox Code Playgroud)

如上所述,我找不到任何明显的设置缺陷,但这里有一些可能的相关点:

  • 建立连接并调用服务器端方法.
  • 这可能是无关紧要的,但我尝试强制不同的传输而不改变行为.
  • 客户端方法名称在任何时候都不会与服务器方法名称冲突.
  • 我也尝试将消息发送到特定的客户端连接(在这种情况下,这实际上是目标).
  • 我在客户端和服务器上都启用了日志记录,但在任何一种情况下都没有看到任何相关内容.

所以,鉴于上述情况,我错过了一些明显的东西吗?如果没有,识别故障点的最佳方法是什么?

PS这与问题没有特别的关系,但是,由于某些原因,Fiddler不再从我的任何浏览器捕获任何流量,这使得调试WS或HTTP流量有点挑战 - 我猜这是Windows 8的事情. ..

signalr-hub

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

调用"requestWindowFeature(Window.FEATURE_PROGRESS);"时出现Android错误 在活动中

我正在尝试在Android Activity中显示WebView的加载进度.当我尝试显示窗口的进度条时:

requestWindowFeature( Window.FEATURE_PROGRESS );
Run Code Online (Sandbox Code Playgroud)

根据http://developer.android.com/guide/appendix/faq/commontasks.html#progressbar,但此时我收到调试错误.

当错误发生时,我在Eclipse中看到一个新选项卡"ActivityThread.performLaunchActivity",其中有一条消息"Source not found".和一个按钮"编辑源查找路径...".

当我删除违规行时,我没有收到此错误.

什么可能导致这个问题?我是否需要在AndroidManifest.xml文件中设置权限,还是我还缺少其他内容?

android

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

Google GData .Net OAuthUtil.GetAccessToken 400错误请求

我正在尝试通过Google .Net GData客户端库生成OAuth访问令牌.我一直在使用http://code.google.com/apis/gdata/docs/auth/oauth.html中的说明作为指导,所有内容一直在进行,直到我尝试拨打电话OAuthUtil.GetAccessToken( parameters ),我收到了"(400) )错误请求"网络例外.

不幸的是,它没有告诉我为什么这是一个糟糕的请求.所以,我对此感到困惑.我唯一的想法就是,因为我使用的是localhost网址,但它不起作用(虽然我已经在Google API控制台中注册了网址,但这样做似乎没问题).

我在这里做错了什么以及我应该做些什么才能做到正确?

OAuthParameters对象被创建像这样(的敏感数据被审查,希望并不能使它很难回答):

BaseProperties:
    oauth_consumer_key:     <CLIENT_KEY>,
    oauth_nonce:            <NONCE>
    oauth_signature_method: HMAC-SHA1
    oauth_timestamp:        1330440325
    oauth_token:            <TOKEN>
    oauth_verifier:         <VERIFIER>
Callback:        "http://localhost:57381/subscription_auth.aspx?c=google.calendar"
ConsumerKey:     <CLIENT_KEY>
ConsumerSecret:  <CLIENT_SECRET>
ExtraProperties
    oauth_consumer_secret: <CLIENT_SECRET>
    scope:                 https://docs.google.com/calendar/feeds/
    oauth_callback:        http://localhost:57381/subscription_auth.aspx?c=google.calendar
Nonce:           <NONCE>
Scope:           "https://docs.google.com/calendar/feeds/"
Signature:       NULL
SignatureMethod: "HMAC-SHA1"
Timestamp:       "1330440325"
Token:           <TOKEN>
TokenSecret:     NULL  -- No Token Secret was returned from the callback.
Verifier:        <VERIFIER>
Run Code Online (Sandbox Code Playgroud)

这转换为Web响应的标题,如下所示:

Authorization: OAuth oauth_version="1.0",
oauth_nonce=<NONCE>,
oauth_timestamp="1330441324",
oauth_consumer_key=<CLIENT_KEY>, …
Run Code Online (Sandbox Code Playgroud)

.net oauth gdata

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

尝试使用Windows Azure存储模拟器时接收404响应

问题

当我尝试使用存储模拟器(v3.4.0.0)时,我收到以下异常:

System.Net.WebException: The remote server returned an error: (404) Not Found.
Run Code Online (Sandbox Code Playgroud)

具体来说,当我尝试与我的CloudBlobContainer实例进行交互时会发生这种情况blobClient.GetContainerReference( myContainerName ).在这种情况下,当我尝试以下操作时会发生这种情况:

var permissions = await container.GetPermissionsAsync();
Run Code Online (Sandbox Code Playgroud)

当我调试代码并在执行此行之前观察容器实例时,我可以看到对象的内部确实设置为使用模拟器,并且所有适当的字段/属性都是应该的(使用正确的" devstoreaccount1"帐户名称等".

知道为什么会这样吗?更好的是:如何让我的代码看到模拟器?

附加信息

  • 存储模拟器正在运行,我已将其设置为使用我的本地Sql Server 2012实例,并且可以确认它已在数据库中创建了所有相应的表.
  • 我尝试ping,127.0.0.1:10000但收到消息"Ping请求找不到主机127.0.0.1:10000.请检查名称,然后重试."
  • 我有一个运行IIS 8.5的本地实例,但我想这不是问题.无论如何,我正在通过IIS运行我的应用程序,因此关闭它不是我的选择.
  • 在Windows 8.1上运行

azure-storage azure-storage-emulator

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