在虚拟空间上反搭建mvc+silverlight过程

发生在我的新同事身上,不止一次。希望你们看到不要生气,没人知道谁是我同事的。当我发ftp://192.168.123.4,我们公司的ftp的地址给他们并告诉他们公司资料有一部分放上面。他们第一反应就是输入到浏览器中。有又表达了一次:输入到资源管理器中。他们都是先是一愣。我指了一个已经打开的文件夹的地址栏说这里,他们才恍然所悟。
    后来我想,一是对ftp的知识有点陌生,二是对资源管理器这个名称也比较陌生。也可见大家对一些基础的操作系统的知识还是缺乏。所以大家说网络课上教web,ftp部署等的课程到底是不是重要。那些所谓的专业名称、术语到底有没有用?
    虚拟空间网站部署我比较推荐 ftp工具部署。今天先用Windows资源管理器直接访问复制吧。

登录进来以后,根据不同服务商你会有不同的文件。一般也就这三个。我见过的4,5种虚拟主机空间都是这样的。但应该会有例外。

db:存放web的备份,数据库的备份文件夹
log:存放web历史记录的文件夹

web:就是你要放网站的地方了。

Web发布

右击一个网站项目,点击发布,如下图

这里感觉虚拟主机需要,我只说FTP与文件系统部署。

FTP部署:

两个单选意见已经很明确,就不说了

这里的web文件夹是针对上面说的,把网站目录放在web文件夹中的虚拟主机。根据你的情况填写路径。并填上用户名与密码就可以发布了。
但这个方法稳定性不是很好,就是偶尔会那么失败几次。原因看vs输出说明,可能网速问题,安全问题,或不知道什么原因。这时候就换文件系统部署吧。

文件系统部署:

这里目标位置指定一个空文件夹,否则文件就会发布到那个文件夹目录下,如果是一个有文件的文件夹,就会很乱。好,点击发布


我的桌面上就多了一个web文件夹。然后,就把里面的内容复制到上面的ftp的web文件夹下面吧!你的网站就发布成功了!

就这么结束了?不!你可别开心太早,我们部署的可是mvc!

MVC的部署需知

回头想想,我们要建立一个mvc3的步骤:

安装好vs2010,新建工程发现没有mvc3,明白没安装
上网下mvc3的安装包,汉化包,安装…
新建工程,选.net formwork4.0,有了。
新建好,可以运行了。

然后如同上面步骤,发布mvc3的项目。

bin下面有那些文件,只有4个。不错,你按F5的时候可以运行,一切正常。
但发布了不一定可以运行。Why?

回想mvc安装步骤。
如果你发布到的不是本机的iis上。你能保证发布目标的机器安装了mvc3的安装包。

那没有安装mvc3的机器我们该怎么办?

分析这个问题:
安装了mvc3的机子有哪些不同?打开:
64位: C:Program Files (x86)Microsoft ASP.NET
32位:C:Program FilesMicrosoft ASP.NET

这还不是要点。现在打开你的工程,找到引用,对着System.Web.Mvc按F4或点开右键菜单,点属性

看属性图说话:
运行时版本:
需要.net 4.0。也就是说应用这个dll必须要.net 4.0。当然,有很多文件可以用2.0支持,如System.Web也有2.0运行时的版本。但mvc3的运行时就必须要用4.0,因为内部代码必须用到4.0的相关功能。

复制本地:就是要不要把这个dll复制到bin文件夹中,所谓的本地,就是随发布而复制
路径:就是说这个dll文件存放路径。要点来了。似曾相识的路径。对,就是mvc3安装路径!
说明:当一台安装有.net4.0却没有安装mvc3的机子又怎么去引用mvc3安装目录下的dll哪?所以我们必须复制本地,让vs把mvc3的dll带上,放在bin里面,问题就解决了。所以,没有安装mvc3的机子,只要复制本地,就可以解决这个问题。

再说明不仅仅是mvc3这个dll安装的机子上会没有,大部分的dll都可能会没有。简单的说就是除非是.net 4.0原生支持的dll因为安装.net formwork 4.0的时候会被安装进去。很多dll是因为我们安装vs2010才被安装进去的。如System.Web.Helpers就是一个vs2010安装后才有的dll。

所以,最简单的方法就是,全部设置为复制本地。本身dll就不大。一般就几mb。对空间不会照成负担。只要下次发布是时候选择“用本地副本替换匹配的文件”。这样就避免重复复制dll。这也是部署mvc3要关注的问题。

有些人会说,我就是不想全复制进去,我有怎么知道那些有没有?

当你将缺少dll的web发布出去,你访问的时候会报错。但出于安全要求,是不会显示错误的。所以你要在web.config打开错处显示。
<system.web>
  <customErrors mode="On"/>

On 代表打开。再打开你的网站,你会发现有所不同。

先不管英语说啥了。红色那行就是你却的Dll。(小心页面有变化但因为IE缓存页面而看不出来)
然后咋办?

自己去有dll的自己上安装路径找那个DLL复制到发布的Web的bin目录下面。
都说全复制本地最方便。呵呵!

MVC路径解析
mvc3要部署在iis6上面,解决.net 4.0与dll的问题还是不够的。还有一个路径解析问题。
这个问题是出在iis6的部署上,iis6以上版本不会再有。

添加解析:右击IIS中的网站选择“属性”-“主目录”-“配置”-“映射”-“插入”,配置如下:可执行文件:C:WINDOWSMicrosoft.NETFramework 4.0.30196spnet_isapi.dll,确认文件是否存在:不选中点击确定,最后如下图所示:

要改iis6,虚拟主机怎么办?
首先接受现实。总不能为解决这个问题黑了人家服务器吧!
然后找服务商客户谈,把这个修改内容发给客服或技术人员。让他们给解决。
但事情往往不是那么顺利的。
对方可能没有服务器的操作权利,或者不提供配置服务,或要领导批准后不了了之。

那我们就只有自力更生的!通过迂回达到我的目标。
需要在项目中添加两个文件与修改Global.asax.cs
添加:Default.aspx,全部内容如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DemonstrateWeb._Default" %>
<%-- Please do not delete this file. It is used to ensure that ASP.NET MVC is activated by IIS when a user makes a "/" request to the server. --%>

代码文件:Default.aspx.cs,全部内容如下:

using System.Web;
using System.Web.Mvc;
using System.Web.UI;

namespace DemonstrateWeb
{
    public partial class _Default : Page
    {
        public void Page_Load(object sender, System.EventArgs e)
        {
            // Change the current path so that the Routing handler can correctly interpret
            // the request, then restore the original path so that the OutputCache module
            // can correctly process the response (if caching is enabled).

            string originalPath = Request.Path;
            HttpContext.Current.RewritePath(Request.ApplicationPath, false);
            IHttpHandler httpHandler = new MvcHttpHandler();
            httpHandler.ProcessRequest(HttpContext.Current);
            HttpContext.Current.RewritePath(originalPath, false);

        }
    }
}

添加这样的文件就是因为mvc中没有Default.aspx主页.

我们需要让默认主页转到mvc的路由上。

修改Global.asax.cs

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default", // 路由名称
                "{controller}/{action}.aspx/{id}", // 带有参数的 URL
                new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值
            );
            routes.MapRoute("NoAction", "{controller}.aspx", new { controller = "home", action = "index", id = "" });//无Action的匹配
            routes.MapRoute("NoID", "{controller}/{action}.aspx", new { controller = "home", action = "index", id = "" });//无ID的匹配
            routes.MapRoute("Root", "", new { controller = "home", action = "index", id = "" });//根目录匹配
        }

这里我们改变的路由注册函数。其实简单的说就是在所有的路径后面加上aspx。如:
http://localhost:3572/home/index.aspx
这样iis6就能识别出来了,这样一定让你很纠结,但却没有更好的办法。
说以如果服务商的技术人员能帮我处理好路径解析是最好的!

Silverlight的部署问题
SilverLight的部署问题其实就是.xap文件名是否能被服务器支持的问题。

解决的方法:
添加MIME类型。
.xaml  application/xaml+xml
.xap  application/x-silverlight-app
如图:


很多服务商会主机管理提供这个服务。
下面方法搜索到的,没有尝试过、
但是大多数时候我们并没有操作IIS的权限。
把.xap文件名改为.zip(原因大家应该知道,xap文件其实就是zip)。但是zip也可能不会被服务器支持,因为这些免费的空间只能显示HTML!因此我把.xap改成了.html,SilverLight程序就可以神奇的显示在HTML页面里了。

 

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索net
, web
, 服务器
, 文件
, 路由
aspx
silverlight mvc、mvc使用 silverlight、mvc调用 silverlight、maven springmvc搭建、springmvc搭建web项目,以便于您获取更多的相关知识。

时间: 2024-09-21 13:36:24

在虚拟空间上反搭建mvc+silverlight过程的相关文章

x264代码剖析(一):图文详解x264在Windows平台上的搭建

x264代码剖析(一):图文详解x264在Windows平台上的搭建           X264源码下载地址:http://ftp.videolan.org/pub/videolan/x264/           平台:win7 PC.VS2010   1.MinGW的下载.安装与配置   MinGW的下载地址:http://sourceforge.net/projects/mingw/files/ 如下图,点击下载即可. 全部采用默认安装(安装过程中会自动下载所需要的插件等等,故耗时略长)

史上反侦察力最强木马“隐魂”:撑起色情播放器百万推广陷阱

本文讲的是史上反侦察力最强木马"隐魂":撑起色情播放器百万推广陷阱,近期,360安全中心紧急预警了一款感染MBR(磁盘主引导记录)的"隐魂"木马,该木马捆绑在大量色情播放器的安装包中诱导网民下载,入侵后劫持浏览器主页并安插后门实现远程控制.据统计,短短两周内,"隐魂"木马的攻击量已达上百万次,是迄今传播速度最快的MBR木马. 与疯狂的肆虐趋势相对应的,是"隐魂"木马超高的反侦察能力和极其复杂的制作技术: 从感染方式上来说,不同

link环境下制作的一款《网盘软件》,放在三个虚拟空间上的方案是否能实现?怎么实现?

问题描述 link环境下制作的一款<网盘软件>,放在三个虚拟空间上的方案是否能实现?怎么实现? link环境下制作的一款<网盘软件>,放在三个虚拟空间上的方案是否能实现?怎么实现? 解决方案 可以实现,不过你需要用nginix一类的反向代理服务器

赶紧接着上一节:Silverlight+WCF 新手实例 象棋 主界面-实时聊天区(二十五) 这节我们实现上节没实现的纠结的进出房间的消息提示 我们清楚的知道,我们每个区都是一个用户控件,我们的在线用户进出时,得到聊天区域显示信息,这就涉及到用户控件之间的消息传递了。 在线用户区说:反正我是

赶紧接着上一节:Silverlight+WCF 新手实例 象棋 主界面-实时聊天区(二十五)  这节我们实现上节没实现的纠结的进出房间的消息提示 我们清楚的知道,我们每个区都是一个用户控件,我们的在线用户进出时,得到聊天区域显示信息,这就涉及到用户控件之间的消息传递了. 在线用户区说:反正我是没权直接去实时聊天区写东西,没办法,找中介委托设置一下了. 那谁是中介呢?委托谁呢?当然是衣食父母Index.xaml了,是它撑着整个家庭的. 好了,知道中介了,那我就签个委托书了: 回到OnlineUse

跪求大神指导docker上怎么搭建Python环境啊,呜呜,给个网址也行啊,百度不到查好多试了都不成功好烦躁,求好心人

问题描述 跪求大神指导docker上怎么搭建Python环境啊,呜呜,给个网址也行啊,百度不到查好多试了都不成功好烦躁,求好心人该问题来自CSDNDocker技术交流群(303806405),由版主xinshubiao整理. 解决方案 解决方案二:B:dockerpulldocker.cn/docker/python或dockerpullpythonhttps://github.com/docker-library/python/blob/master/2/Dockerfile这个是那个镜像的d

Appium+python自动化16-appium1.6在mac上环境搭建启动ios模拟器上Safari浏览器

前言 在mac上搭建appium踩了不少坑,先是版本低了,启动后无限重启模拟器.后来全部升级最新版本,就稳稳的了. 环境准备: 1.OS版本号10.12 2.xcode版本号8.3.2 3.appium版本号1.6.4(appium-desktop1.1.0) 4.ios模拟器版本号10.3   一.OS10.12 1.这里Mac上的OS系统一定要升级到10.12,低于10.12是无法安装8.3.2的xcode版本的 2.下载地址:https://www.apple.com/macos/sier

使用wordpress搭建博客过程中遇到的一些问题

对于一个新手而言,第一次使用wordpress搭建个人博客,而且要在不同的环境上work,包括mac,ubuntu.再搭建的过程中遇到了很多的问题,通过一步步调试,逐步定位 问题所. 比如wordpress在上传图片的时候会自动生成缩略图,这个在mac上工作的很好,但是移植到ubuntu上的时候,缩略图生成不了了. 通过一步步添加日志的方法,逐步定位到是因为ubuntu上的php没有安装gd扩展. 下边提供一种定位的方法: 打印调用栈:在你的代码中调用这段代码,就能看到完整的调用栈.这对你整理程

【干货】Apache Hadoop 2.8 完全分布式集群搭建超详细过程,实现NameNode HA、ResourceManager HA高可靠性

最近在自己的笔记本电脑上搭建了Apache Hadoop分布式集群,采用了最新的稳定版本2.8,并配置了NameNode.ResourceManager的HA高可用,方便日常对Hadoop的研究与测试工作.详细的搭建过程如下: 1.安装docker,创建docker容器,用于搭建hadoop节点 docker真是个好东西啊,当要在自己的笔记本上搭建分布式集群时,由于CPU.内存.磁盘有限,无法在VMware上虚拟出太多节点,这时使用docker创建几个容器,就能轻松搭建一个分布式集群了. (1)

phabricator在mac上的搭建(转)

环境:OS X Yosemite 10.10.5 前提:phabricator主要是由php写的,而且是以website方式运行的,所以mac上要先安装好 php + nginx(或apache) + mysql(很多配置会保存在数据库里) php/nginx/mysql的环境搭建可参考: http://blog.qiji.tech/archives/132 http://blog.csdn.net/dyllove98/article/details/41120789   phabricator