我有一个托管在IIS7服务器上的.net 4.0 Web应用程序.
阅读本文后:http://learn.iis.net/page.aspx/496/iis-url-rewriting-and-aspnet-routing/关于从另一台服务器提供静态内容,以便每次请求都不会发送cookie对于静态文件,我尝试了但没有太大的成功.
这是在web.config文件中编写的部分:
<system.webServer>
<rewrite>
<rules>
<rule name="images" stopProcessing="true">
<match url="^images/(.*)$" />
<action type="Rewrite" url="http://static-server.com/images/{R:1}" appendQueryString="true" logRewrittenUrl="true" />
</rule>
</rules>
</rewrite>
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
定义此规则后,应将映像文件夹中文件的每个链接重写到静态服务器URL中.但这根本不起作用,现在images文件夹中的每个图像都返回404未找到的图像.任何可能导致此行为的想法,或者如何从不同服务器的特定文件夹中提供文件的不同解决方案,而不必通过大量代码并更改链接到静态服务器的所有链接?
我也尝试使用重定向操作类型而不是实际工作的重写操作,但它无法解释为什么我试图在不同的服务器上提供文件的原因(这种方式请求被发送到我的动态内容服务器所有必需的cookie并重定向到静态服务器,这实际上比从动态内容服务器提供图像更糟糕.
我有一个静态类,它有一些静态数据.如果数据从不同的应用域访问,会发生什么?
每个域都会有一个静态类的副本吗?
原始类型会被复制吗?
如果数据可序列化怎么办?
我有一个带有属性的视图模型,如下所示:
[Display(Name = "Some Property", Description = "This is description", Prompt = "This is prompt")]
[Required(ErrorMessage = RequiredFieldMessage)]
public string SomeProperty { get; set; }
Run Code Online (Sandbox Code Playgroud)
但这似乎没有在视图中呈现任何额外的内容.你需要做一些额外的工作吗?
<div class="editor-label">
@Html.LabelFor(model => model.SomeProperty )
</div>
<div class="editor-field">
@Html.TextAreaFor(model => model.SomeProperty , 5, 80, null)
@Html.ValidationMessageFor(model => model.SomeProperty )
</div>
Run Code Online (Sandbox Code Playgroud) 在我的Knockout视图模型中,我有一些属性,我正在尝试创建一个可观察的哈希.而不是我的前Knockout代码
self.MyHash = {};
Run Code Online (Sandbox Code Playgroud)
我现在正在使用:
self.MyHash = ko.observable({});
Run Code Online (Sandbox Code Playgroud)
在我的代码的其他部分,我用这样的语句操作哈希:
// add an entry
self.MyHash()["test"] = "My Value";
// remove an entry
delete self.MyHash()["test"];
Run Code Online (Sandbox Code Playgroud)
代码有效,因为条目被正确添加和删除.但是,哈希表的更改似乎没有被观察它的代码区域检测到.例如,当我更改哈希表时,这个计算的observable永远不会运行:
self.Querystring = ko.computed(function ()
{
var f = [];
$.each(self.MyHash(), function (k, v)
{
f.push(encodeURIComponent(k) + '=' + encodeURIComponent(v));
});
return (f.length > 0) ? f.join("&") : "";
});
Run Code Online (Sandbox Code Playgroud)
我猜这是因为Knockout observable需要是简单的变量(或observableArrays),并且它没有检测到哈希表的底层更改.
如果是这样,还有其他选择吗?为什么Knockout中没有observableHash类型?
对于它的价值,我的解决方法是使用observableArray键和常规JavaScript哈希表来查找值.然后我改变了我的计算方法来观察键数组而不是之前的其他哈希表变量.我只是想确保我没有错过在Knockout中执行此操作的"正确方法".
self.MyHashKeys = ko.observableArray();
self.MyHash = {};
self.Querystring = ko.computed(function ()
{
var f = [];
$.each(self.MyHashKeys(), function (index, value)
{
f.push(encodeURIComponent(value) + '=' …Run Code Online (Sandbox Code Playgroud) 我正在编写一个内部使用ServiceStack.Text的自定义库.使用我的其他库也可以使用ServiceStack.Text.
我想改变一些JsConfig选项(特别是日期处理),但是,像任何好公民一样,我不希望我对这些值的修改会给我的消费者带来副作用.
不幸的JsConfig是,它是一个静态类,所以它的设置是静态的,并且会在同一个AppDomain中流向ServiceStack的其他消费者.这是一种不受欢迎的行为.
有没有办法将我的配置更改范围扩展到我的调用JsonSerializer?
更新
我确实知道有这种JsConfig.Reset方法,不幸的是如果调用者已经定制了它,那将会丢失.
我可以保存值并恢复它们,但我必须同步对序列化程序的访问,这也有点挫败了目的.
希望有一些简单的我不见了?
我从我的代码中删除了一个子模块,当我尝试现在推送到heroku时,我得到:
remote: Git submodules detected, installing:
remote: No submodule mapping found in .gitmodules for path 'submodule/path'
remote:
remote: ! Push rejected, submodule install failed
remote:
Run Code Online (Sandbox Code Playgroud)
我正在使用Heroku的buildpack:https://github.com/heroku/heroku-buildpack-multi.git
有了这个.buildpacks文件:
https://github.com/ello/heroku-buildpack-imagemagick-cedar-14
https://github.com/heroku/heroku-buildpack-ruby.git
Run Code Online (Sandbox Code Playgroud)
有什么我可以做的来解决这个问题吗?我只需要删除这个应用程序并开始一个新的应用程序(这显然是非常不受欢迎的).
我们最近在我们的网站上实施了IIS7 URL重写,以获得更好看的URL.
然而,在我们实施它的那一天,在Google Analytics中,我们的付费与自然搜索结果完全搞砸了.突然间,它将付费点击(AdWords)视为有机点击.它在AdWords中显示正确(每天支付约200 +点击费用),但在Google Analytics中只有~10个付费节目,但我们的有机帐户显示缺少付费点击.
我想知道我的网址重写是否会阻止Google Analytics跟踪付费的AdWords点击?
以下是我们在Google上展示的广告链接示例:
http://www.google.com/aclk?sa=l&ai=C03Wve-ZTTt7QC-i8sQK5iIGXA-7_wYMCvpDoqxu54dM0CAAQASgDUMGQrLb7_____wFgydaQjNCklBCgAcfhhv8DyAEBqgQbT9Daa567OsJBGZL_14L3WbAhEpxL9j8g6o7&sig=AOD64_0JL2LlkX_ZN_YDHqOFFlAhTrIb7A&ved=0CAgQ0Qw&adurl=http://www.ourdomain.com
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,广告指向http://www.ourdomain.com(示例) - 根目录.这是Default.aspx,它在页面加载事件后面的代码中有一个重定向,重定向到Home.aspx(http://www.ourdomain.com/home.aspx) - 没有进行URL重写.这个特定的重定向已经存在,因为BEFORE URL重写已经实现并且跟踪引用很好UNTIL我添加了IIS 7 URL重写.
我只有2条重写规则可能会影响Google AdWords链接(见下文).
<!-- Remove any trailing slashes -->
<rule name="Remove trailing slash" stopProcessing="true">
<match url="(.*)/$" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="{R:1}" />
</rule>
<!-- Homepage Rewrite -->
<rule name="Homepage">
<match url="^Home$" />
<action type="Rewrite" url="/home.aspx" />
</rule>
Run Code Online (Sandbox Code Playgroud)
我不明白为什么其中任何一个会导致问题,因为我们的AdWords广告的网址再次指向根目录 - http://www.ourdomain.com(没有尾随斜杠,没有/ home).
关于我可能检查的任何其他想法?非常感谢!
asp.net iis-7 google-analytics google-adwords url-rewrite-module
我想在子动作中生成HTML头部分; 而页面有许多其他子动作.html head部分依赖于其他操作来确定应包含哪些js/css文件.不同的子动作可以共享相同的js/css文件; 并且不同的页面具有不同的css/js组合,因此有理由这样做.这是我的示例代码:
Layout.cshtml:
<html>
<head>
@RenderZone("header")
</head>
<body>
@RenderZone("zone1")
@RenderZone("zone2")
@RenderZone("zone3")
</html>
Run Code Online (Sandbox Code Playgroud)
每个区域都有1个或多个子操作.
RenderZone也是一个动作.数据模式:
Model = GetAllChildActions(zoneName)
Run Code Online (Sandbox Code Playgroud)
RenderZone视图:
foreach(var m in Model)
@html.action(controller = m.controller, action = m.action)
Run Code Online (Sandbox Code Playgroud)
因为Header区域是顶层所以它总是先执行,然后它无法从其他子操作中获取数据.我已经尝试过滤器(onActionExecuted; onActionResultExcuted等),但它们都不起作用.我真的需要在渲染所有子动作后执行头动作.我不想在页面底部生成css.我可以,但我不想使用javascript注入js/css文件; 或者写一个http模块来"手动"改变输出html.在webform中处理它非常容易.我相信在MVC中也有办法做到这一点.任何帮助将不胜感激!
作为Javascripts的初学者,我决定尝试Knockout开始非常简单并且更先进.然而,我甚至无法在一个非常简单的场景中让它工作.
我猜这个问题非常简单,我有点不好意思在这里问这个问题.但我不擅长调试Javascript,也不知道bug会如何表现,所以这里就是这样.
这是asp.net MVC 3生成后页面的html源代码:
<html>
<head>
<title>Index</title>
<link href="/Content/Site.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
</head>
<body>
<h2>Index</h2>
<script src="/Scripts/knockout-1.3.0beta.debug.js" type="text/javascript"></script>
<script src="/Scripts/knockout-1.3.0beta.js" type="text/javascript"></script>
<script type="text/javascript">
var viewModel = {
name: "Joe",
number: "13"
};
</script>
<script type="text/javascript">
ko.applyBindings(viewModel);
</script>
<ul>
<li>Name: <input data-bind="text: name"/></li>
<li>Number: <input data-bind="text: number"/></li>
</ul>
<ul>
<li>Name: <span data-bind="text: name"></span></li>
<li>Number: <span data-bind="text: number"></span></li>
</ul>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Joe或13不受输入或文本框的约束.
尝试把它放在一个ko.observable()但也没有工作.就像脚本没有运行一样.
尝试使用FireBug进行调试,我可以看到执行了applyBinding,并且viewModel对象确实包含了正确的变量.
这可能是显而易见的事情.如果你在这里看不到它,那么你可以指出在使用FireBug时我应该寻找什么吗?
编辑
在尝试了几种解决方案的组合后,我仍然遇到问题.使用一个解决方案,HTML看起来像这样:
<html>
<head>
<title>Index</title>
<link href="/Content/Site.css" rel="stylesheet" type="text/css" />
<script src="/Scripts/jquery-1.5.1.min.js" type="text/javascript"></script> …Run Code Online (Sandbox Code Playgroud) 我对这个感到困惑.我正在使用razor和MVC 3,我对一个动作的一个视图有问题.
[HttpGet]
[ActionName("Unsubscribe")]
public ActionResult UnsubscribeGet(string maskedId)
{
return View("Unsubscribe", maskedId);
}
Run Code Online (Sandbox Code Playgroud)
Unsubscribe.cshtml视图位于正确的视图文件夹中.
路线是
routes.MapRoute(
"", // Route name
"Unsubscribe/{maskedId}", // URL with parameters
new { controller = "Account", action = "Unsubscribe" });
Run Code Online (Sandbox Code Playgroud)
当转到以下URL"/ Unsubscribe/db94fddb"时,操作将触发,然后在尝试查找视图时显示以下错误.
未找到"取消订阅"视图或其主页,或者视图引擎不支持搜索的位置.搜索了以下位置:
〜/ Views/Account/Unsubscribe.aspx
~/Views/Account/Unsubscribe.ascx
~/Views/Shared/Unsubscribe.aspx
~/Views/Shared/Unsubscribe.ascx
~/Views/Account/db94fddb. master
~/Views/Shared/db94fddb.master
~/Views/Account/db94fddb.cshtml
~/Views/Account/db94fddb.vbhtml
~/Views/Shared/db94fddb.cshtml
~/Views/Shared/db94fddb.vbhtml
请注意,在查找Unsubscribe时它不会查找cshtml扩展名,但在查找db94fddb时会查找
只有这种观点才会发生这种情况,完全不知道如何修复它.
**编辑**
找到了,
我使用System.String作为模型.由于某些原因导致它爆炸.
我交换了它 @model UnsubscribeViewModel
[HttpGet]
[ActionName("Unsubscribe")]
public ActionResult UnsubscribeGet(string maskedId)
{
return View("Unsubscribe", new UnsubscribeViewModel { MaskedId = maskedId } );
}
Run Code Online (Sandbox Code Playgroud)
虽然这现在有效但我仍然不知道为什么之前没有用.我将我的视图设置为在构建时编译,因此没有编译器错误.
我很想知道这里发生了什么.
razor ×3
.net ×2
asp.net ×2
c# ×2
iis-7 ×2
javascript ×2
knockout.js ×2
.net-4.0 ×1
action ×1
appdomain ×1
firebug ×1
git ×1
heroku ×1
html5 ×1
servicestack ×1