我看到 dotnetblogengine.net 并且从论坛帖子中得到的印象是,将它集成到现有站点中并不容易。是否有一个现代博客/新闻解决方案可以像任何其他 ASP.NET 控件一样使用?
4 回答
请找到如何集成此现有应用程序的分步指南。此外,您还可以找到与 asp.net 应用程序集成的解决方案,因为将此 BlogEngine 网站项目与 asp.net Web 应用程序集成涉及一些复杂性。您只需按照以下说明操作即可完成。
获取 web 项目文件夹
现在您已经下载了 zip 文件,您需要将其解压缩。这可以通过一堆不同的实用程序和一堆不同的方法来完成。
如果您选择 Web 项目下载,则新解压缩的文件夹包含您要使用的 Web 项目。如果下载源代码,web 项目就有点被埋没了。Web 项目位于 BlogEngine.NET 文件夹下,然后是 BlogEngine 文件夹。
在您的 Web 服务器上加载 Web 项目
现在您有了 Web 项目文件夹,将这些文件和文件夹复制到您的 Web 服务器。这通常涉及 FTP,但根据您的情况,它甚至可能需要便携式存储设备(例如 USB 闪存驱动器)。
将文件夹设置为 .NET 4.0 应用程序
这个没什么好说的。如果您有直接的 IIS 访问权限,则需要创建一个应用程序。如果您使用的是托管提供商,则需要使用他们的控制面板来实现这一点。它应该是一个标准选项,但如果您没有找到它,您可能需要联系您的托管服务提供商以获得支持。
为 App_Data 文件夹添加写入权限
这是一个经常被遗忘的步骤。如果您错过了它,您会在尝试进行更改时立即注意到。您需要授予应用程序对 App_Data 文件夹的写入权限。同样,您的托管服务提供商可能有一个控制面板允许您执行此操作。如果没有,您可能需要联系您的托管服务提供商以获得支持。
设置写入权限可能涉及多达 3 个步骤:
使用 IIS 管理工具或托管服务提供商的控制面板,将文件夹设置为“可写入”;
如果您可以直接访问文件系统,请确保运行 BlogEngine.NET 应用程序池的帐户(通常是 XP / 2003 上的“ASPNET”和 Vista / 2008 上的“网络服务”)对物理文件夹具有写入权限;
解压缩 web 文件夹后,所有文件都启用了其只读属性。为 App_Data 文件夹以及所有文件和子文件夹关闭该属性。
导航到网页
好的,现在您已准备好导航到该网站并查看您的操作。例如,如果您将网站安装到本地机器上进行测试,您将导航到http://localhost/default.aspx
. 您还可以使用 IIS MMC 管理单元编辑默认文档以显示为 default.aspx。如果这样做,您可以直接导航到http://localhost/
而不指定页面名称。如果一切顺利,您会看到默认的博客页面。
登录并设置您的用户名
最后一步是向下滚动并在右侧找到登录链接。单击登录,然后登录以下信息。
用户名:admin
密码:admin
登录后,您将在右侧看到一个新菜单。单击用户。
为自己创建一个新用户。您选择的用户名是您的显示名称。有关详细信息,请参阅用户管理页面。
删除管理员帐户。您不希望所有阅读本文的人都能登录您的博客,对吗?
最后,注销,然后使用您刚刚为自己创建的用户帐户重新登录。
上面的安装是为了,如果我们想将博客作为一个独立的站点运行,这在我们的案例中特别少见,**所以让我们将我们的博客包含在我们的站点中,这样我们就不必重定向到另一个站点就可以了到博客或从博客到主网站。**在此处输入代码
将博客引擎站点包含到我们自己的项目中:
在根目录下创建一个名为 Blog 的文件夹或您想命名的文件夹。将整个 Blog Engine .net 站点复制到此文件夹中,除了 App_Global Resources、App_Code、Web.Config、robots.txt、web.sitemap 和 Global.asax。
将 App_Code 文件夹重命名为 BlogApp_Core 或根据需要重命名。因为 App_Code 文件夹无法与 Web 应用程序一起使用,因为它们与网站一起使用。现在将此文件夹复制到项目的根目录。
将 App_Global Resources robots.txt 和 web.sitemap 合并或复制到项目的根目录。
在 Web 应用程序中添加 Blog Engine.core 项目。构建 Blog Engine.core 并将您的 Web 项目的引用添加到“BlogEngine.Core.dll”。
Web.Config 更改 如果您已经有一个 web.config,则将博客的 Web.Config 与其合并,否则只需将其复制到根目录。转到页面部分中的行:
将其更改为:
<add assembly=”BlogWap” namespace=”Controls” tagPrefix=”blog”/>
BlogWap
Web 项目名称在哪里 。转到该行:
<add key="BlogEngine.VirtualPath" value="~/" />
将其更改为:
<add key="BlogEngine.VirtualPath" value="~/Blog/" />
Blog
我们之前创建的文件夹名称在哪里。
如果您想使用 SQL 作为数据库,我们必须进行更多更改
将 SQL 用作 DB 的更改
在您的 Sql 中执行 setup/SQLServer 中的设置以自动生成表。如果要使用 ASP.NET Membership,则可以删除be.Users
和be.roles
表。
根据您的数据库更改连接字符串 where name="BlogEngine"
. 换行:
<blogProvider defaultProvider="XMLBlogProvider">
至:
<blogProvider defaultProvider="DbBlogProvider">
换行:
<membership defaultProvider="XMLMembershipProvider">
至:
<membership defaultProvider="SqlMembershipProvider">
换行:
<roleManager defaultProvider="XMLRoleProvider" enabled="true" cacheRolesInCookie="true">
至:
<roleManager defaultProvider="SqlRoleProvider" enabled="true" cacheRolesInCookie="true">
- 右键单击项目,然后单击转换为 Web 应用程序。
现在您会认为我们已经完成了从网站到 Web 应用程序的转换,但是在将其包含在我们的项目中时,Blog Engine .NET 2.0 版本存在一些问题,现在我们必须编辑项目中的文件以使其工作。
在 web 项目级别搜索
~/admin
并将其替换为~/Blog/admin
Blog 是我们的文件夹名称。~/widget
~/themes
和也一样~/pics
。打开文件
~/blog/pages/settings.aspx.cs
并转到方法中的第 262 行,BindCultures()
然后更改以下行:字符串路径 = Server.MapPath(Util.AbsoluteWebRoot + "App_GlobalResources/");
至:
string path = Server.MapPath("~/App_GlobalResources/");
打开
BlogEngine.Core
项目并转到Utils.cs
. 现在在这里搜索CodeAssemblies()
功能,我们需要更改组件:var assemblyName = "__code";
将此行更改为:
var assemblyName = "WebProjectName";
和:
else
{
if (!IsMono)
{
assemblyName = "App_Code";
}
至:
else
{
if (!IsMono)
{
assemblyName = "WebProjectName";
}
转到功能:
AddFolderJavaScripts()
改变
var fileEntries = Directory.GetFiles(HostingEnvironment.MapPath("~/" + pathFromRoot))
.Where(file =>
!scriptsAddedDuringRequest.ContainsKey(file) &&
file.EndsWith(".js", StringComparison.OrdinalIgnoreCase) &&
!file.EndsWith("-vsdoc.js",
StringComparison.OrdinalIgnoreCase)).ToList();
至:
var fileEntries = Directory.GetFiles(HostingEnvironment.MapPath("~/Blog/" + pathFromRoot))
.Where(file =>
!scriptsAddedDuringRequest.ContainsKey(file) &&
file.EndsWith(".js", StringComparison.OrdinalIgnoreCase) &&
!file.EndsWith("-vsdoc.js",
StringComparison.OrdinalIgnoreCase)).ToList();
现在在
Blog/admin
此处检查文件夹中的文件,您必须检查名称空间实际上他们已经弄乱了名称空间,可能在以后的版本中会很好。您还必须检查 Admin 和 admin 等信件的大小写。修复所有名称空间问题。进行全局搜索
~/App_Code
并将其替换~/Blog_App_Code
为您命名App_code
文件夹的任何内容。构建项目并立即运行您的应用程序应该可以正常工作去博客尝试添加博客删除博客等待嘿发生了什么事您无法删除博客哦我的上帝出了什么问题嗯所以寻找解决方案并最终解决了问题:) .
所以这是解决方案。实际上删除是通过我们从 js 内部调用的 asmx 进行的,因此我们必须检查 js 文件中的路径,它是否具有正确的 asmx 文件路径,最好的方法是将以下行添加到您的站点.master 和 admin.master
<script type="text/javascript">
var fullBaseUrl = '<%=ResolveUrl("~") %>';
</script>
fullBaseUrl
并在有问题的 admin.js 文件中使用此变量。我们还必须在处理程序部分下的 Web.config 中添加以下 2 行,以使这些 asmx 文件正常工作:
<add name="ScriptHandlerFactory" verb="*" path="*.asmx" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add name="ScriptHandlerFactoryAppServices" verb="*" path="*_AppService.axd" preCondition="integratedMode" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
现在是检查每件事是否正常工作的时候了,所以继续构建项目并浏览哇,它工作得很好,最后我们做到了,但是经过严格的测试知道了,我们仍然遇到一些问题,我经过很长的差距:(这是媒体文件,正如我们所看到的,我们可以选择将视频文件上传到帖子和页面,上传会正常工作,但是当你去那个帖子时,就没有视频了一个黑匣子哦,我又被卡住了kkk,但是嘿,我们是软件工程师从不害怕问题,只要对自己有信心并继续前进,所以让我们探索一下,如果有问题,就有解决方案:)解决方案
去Blog/admin/EditPage.aspx.cs
哦,他们在这里硬编码了路径,所以这就是问题所在
搜索功能:
BtnUploadVideoClick(object sender, EventArgs e)
改变:
var folder = "~/" + mediaFolder + "/";` to `var folder = "~/Blog/" + mediaFolder + "/";
我们必须再次为 post 做同样的事情,你会在里面找到Blog/admin/post/Add_entry.aspx.cs
这个BtnUploadVideoClick(object sender, EventArgs e) {
再次构建解决方案并浏览嘿,终于我们的博客完美运行了 :)
我们还可以添加 Facebook 和 twitter 以通过 twitter 和 facebook 共享BlogApp_Code/Extensions
帖子我们将在您的帖子下方获得 facebook 和 twitter 共享选项。我们也可以通过遵循一些规则在 Blog Engine .net 中创建自己的主题。恭喜我们完成了 BlogEngine.net 在我们网站中的集成,其视觉效果与我们的网站相似。现在将帖子添加页面上传到博客,分享您的想法,使用博客为您的业务做任何您想做的事:)。
结论
作为 ASP.NET 开发人员博客引擎 .NET 是最好的开源博客工具,只需几分钟即可轻松安装。使用代码并根据您的要求使其工作。只需要注意一些问题就可以让它在我们的项目中工作。
参考书目
- http://www.upfromthesky.com/blog/post/2009/01/30/Integrate-BlogEngine-145-into-an-exisitng-website-%28VSNET-Website-Project%29.aspx
- http://blogengine.codeplex.com/documentation
请参考这些网站进行定制。创建我们自己的主题:
创建我们自己的扩展:
创建我们自己的控件:
Codeplex 上的 Dasblog 很容易集成。Scott Hanselman 实际上将它用于他的博客http://www.hanselman.com/blog
BlogEngindotnet 非常容易构建您的博客,您只需要
- 下载最新版本,
- 运行源代码中可用的数据库脚本,
- 更改指向数据库的连接字符串,
- 上传到子域,就是这样!
如果您需要免费博客,请使用谷歌提供的博客。
使用 BlogEngine 的最佳选择是将其设置为您现有网站的子域,并重新设计 CSS 以匹配您现有的设计。这是我使用该方法的示例:
http://blog.homenetdirect.com/
博客有太多内容,无法作为控制恕我直言。但是,您可以轻松地为简单的新闻面板创建一个管理员,顶部有标题和日期,并将其数据库化。