小编Tim*_*don的帖子

在web.config中指定相关文件位置以供标准C#类库使用

我正在努力寻找一种在web.configappSettings 中指定文件位置的方法,该方法避免使用硬编码路径,但允许非"网络感知"C#库查找文件.

C#库使用标准File.Open,File.Exists方法等对数据文件进行操作,该数据文件存储在我的Web应用程序(ASP.NET MVC)树中,例如:

\content\data\MyDataFile.txt
Run Code Online (Sandbox Code Playgroud)

要求:

  • 我希望能够指定我的路径,例如:
        <appSettings>
this-->     <add key="MyFileLocation" value="~\content\data\MyDataFile.txt" />
not -->     <add key="MyFileLocation" value="c:\inetpub\wwwroot\foo\content\data\MyDataFile.txt" />
        </appSettings>
  • 我不希望C#库知道它正在使用的Web应用程序,因为它在其他软件中使用,并且Web应用程序不需要知道C#库的配置,所以我真的不知道想要尽可能在层之间传递配置信息.

关于如何干净利落地做任何建议?谢谢!

c# asp.net

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

ASP.NET MVC/C的WFS(Web功能服务)#

基本版: 是否有一个轻量级的C#/ .NET库可以在ASP.NET MVC应用程序中用于服务WFS请求?

详细版本: 我们正在开发一个C#ASP.NET MVC应用程序,该应用程序位于具有一些基本地理空间数据的Sql Server 2008数据库之上.我需要能够在浏览器中的地图背景上使用我们简单的点/线要素(数据库实体)显示地图.计划是使用OpenLayers渲染地图.背景地图由第三方使用WMS提供,所以我知道我可以连接并显示OK.

我遇到的问题是我们希望在地图上显示的数据需要由用户过滤(它当前以表格形式显示).看来我真的需要公开一个WFS服务,以允许用户过滤数据以便在地图上显示.

是否有一个轻量级(理想情况下是免费的)C#组件可以做到这一点?我已经与SharpMap进行了简短的比赛,这很适合我们的需求,但是虽然我可以使用它来渲染地图和我们的数据,但我无法弄清楚如何应用过滤器(这会改变请求的请求)到渲染的数据.或者,有没有人有任何其他建议?

我正在努力避免使用全面的地理服务器(例如GeoServer,MapServer等),因为我们的要求非常基础,并且我们有各种基础设施限制.

提前致谢!

c# gis asp.net-mvc sql-server-2008

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

通过HTTP确认SNS订阅时的AuthorizationError

我正在编写一个简单的SNS客户端,用于订阅自己的SNS主题,然后收听通知.我可以成功提交sns.subscribe请求,但是当我SubscriptionConfirmation从AWS sns.confirmSubscription获取POST消息并尝试回复时,我得到一个AuthorizationError返回:

[AuthorizationError: User: arn:aws:iam::xxx:user/mv-user is not authorized to perform: SNS:ConfirmSubscription on resource: arn:aws:sns:us-east-1:xxx:*]
Run Code Online (Sandbox Code Playgroud)

如果我在服务器的GET查询中使用完全相同的Token和TopicArn,则订阅确认工作正常,没有身份验证.

任何想法为什么它不起作用?我的SNS主题是公开的,发布/订阅权限设置为"Everyone".

作为参考,我的代码是这样的:


        var params = {
            TopicArn: topicArn,  // e.g. arn:aws:sns:us-east-1:xxx:yyy
            Token: token         // long token extracted from POST body
        };

        sns.confirmSubscription(params, function (err, data) {
            if (err) {
                // BOOOM - keep getting here with AuthorizationError
            } else {
                // Yay. Worked, but never seem to get here :(
            }
        });

Run Code Online (Sandbox Code Playgroud)

但是,如果我在浏览器中导航到与此类似的URL(即完全未经身份验证),则它可以完美地运行:

http://sns.us-east-1.amazonaws.com/?Action=ConfirmSubscription&Token=<token>&TopicArn=arn%3Aaws%3Asns%3Aus-east-1%3Axxx%3Ayyy&Version=2010-03-31
Run Code Online (Sandbox Code Playgroud)

唯一的区别似乎是在程序化版本中包含"授权"和"签名"标题(使用Wireshark检查).

有任何想法吗?提前致谢!

更新

在我的代码中,如果我只是以编程方式 …

amazon-web-services node.js amazon-sns

8
推荐指数
2
解决办法
4016
查看次数

转义+(加号)登录Kendo网格ASP.NET MVC ClientTemplate

我在为Kendo网格中的列定义ASP.NET MVC ClientTemplate时遇到问题,因为"+"符号被剥离,导致客户端生成的模板由于语法错误而失败.

我的ClientTemplate是:

c.Template(@<text></text>).ClientTemplate("#='Hello' + Name#")
Run Code Online (Sandbox Code Playgroud)

但是,在客户端,这会减少到:

template: "#='Hello'   Name#"
Run Code Online (Sandbox Code Playgroud)

即加号已被渲染为空格(类似于我猜的URL编码).如果我直接从JS使用该模板,则该模板非常有效(请参阅此JSBin).

有谁知道如何逃脱+符号所以我可以在ClientTemplate中使用它?

我尝试使用' \\+'(被渲染为' \'),' \+(无效的C#)转义,&#43;(+尽管其他如&#44;"工作正常").

有任何想法吗?谢谢.

作为参考,我正在使用Razor标记和Q2 2012 Kendo版本(当我们从Telerik升级时,不能使用Q3但受限于jQuery版本)

注意:在有人问为什么我这样做之前,我的ClientTemplate实际上更复杂,但这是一个简化的例子来说明问题:-)

asp.net-mvc-4 kendo-ui

7
推荐指数
2
解决办法
4698
查看次数

不支持嵌套查询.Operation1 ='UnionAll'Operation2 ='MultiStreamNest'

我有以下形式的Linq to Entities查询:

var x = from a in SomeData
    where ... some conditions ...
    select new MyType
    {
        Property = a.Property,
        ChildCollection = from b in a.Children
                        select new MyChildType
                        {
                            SomeProperty = b.Property,
                            AnotherProperty = b.AnotherProperty
                        }
    };

var y = from a in SomeData
    where ... some other conditions ...
    select new MyType
    {
        Property = a.Property,
        ChildCollection = from b in a.Children
                        select new MyChildType
                        {
                            SomeProperty = b.Property,
                            AnotherProperty = b.AnotherProperty
                        }
    };

var results …
Run Code Online (Sandbox Code Playgroud)

linq entity-framework

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

在局部视图中呈现的模型属性值不正确

我有一个强类型的局部视图,其模型包含一个与父页面视图模型同名的属性.出于某种原因,渲染引擎渲染父视图模型值,而不是预期值(嗯,至少我期望的值!)

父页面视图模型提取:

public class ParentPageViewModel
{
    public int Id { get; set; } // problem property
    ...
    public IEnumerable<ChildViewModel> Children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

子页面视图模型提取:

public class ChildViewModel
{
    public int Id { get; set; } // problem property
    ...
}
Run Code Online (Sandbox Code Playgroud)

父页面提取(Razor):

@model ParentPageViewModel
...
@foreach (var item in Model.Children)
{
    @Html.Partial("MyPartialView", item)
}
...
Run Code Online (Sandbox Code Playgroud)

部分视图提取:

@model ChildViewModel
...
<form ...>
    @Html.HiddenFor(m => m.Id) // problem here - get ParentPageViewModel.ID not ChildViewModel.Id
</form>
...
Run Code Online (Sandbox Code Playgroud)

所以基本上在我的渲染输出中,我的隐藏字段具有父视图模型元素的值,而不是传递给局部视图的值.它肯定是由名称引起的,因为将@ ChildViewModel.Id @的名称更改为类似@ ChildViewModel.ChildId @的内容使其按预期工作.有趣的是,在检查调试器中的视图模型值时,我确实看到了正确的值; …

c# asp.net-mvc partial-views razor asp.net-mvc-viewmodel

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

使用POST请求而不是GET下载文件

我有一个ASP.NET MVC应用程序.在一个页面上,我有一个按钮,允许用户根据用户设置的页面上的某些值(滑块范围,复选框等)下载CSV文件,而无需离开页面.我的Controller类通过返回FileResult的方法返回该文件.

目前,我的javascript onClick方法实现如下,有点jQuery:

function DownloadCSV() {
    var url = <%=Action("DownloadCSV", "Controller")%> + '?' +
                  $.param({
                      SomeValue: $("#valuefromform").val(),
                      OtherValue: $("#anothervaluefromform").val(),
                      ...
                  });

    window.location = url;
}
Run Code Online (Sandbox Code Playgroud)

这部分工作得很好,所以问题是:是否可以重写这个方法,以便它"发布"查询而不是使用"获取"查询字符串?

(我已经尝试过使用一个AJAX请求,它可以很好地POST,但是虽然我得到了文件数据,但这是XHR响应的一部分,我无法弄清楚如何将其下载为文件,所以如果有办法这样做也会很棒!)

asp.net-mvc

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