2014年2月27日 星期四

EntityDataSource resurrected?


Tool:Visual Studio 2013 Ultimate
OS:Windows 8.1
.NET Framework : 4.5.1

http://vmiv.blogspot.tw/2013/12/rip-entitydatasource.html
這篇文章中,談到EF6不支援 EntityDataSource的問題,有一新解法:
使用xml工具開啟Edmx:
image
image
修改 ProviderManifestToken的值為"2008",然後存檔
image
工具就復活了!!
image

2014年2月25日 星期二

OWIN Host

Tool:Visual Studio 2013 Ultimate
OS:Windows 8.1
.NET Framework : 4.5

The Open Web Interface for .NET (OWIN),定義 Web 伺服器與Framework元件之間的抽象層,更容易開發、使用新元件;應用程式容易移轉到不同裝載程式,或移轉到不同平台或作業系統。

以下步驟說明如何將OWIN Host在IIS

image

image

image

image

  • code:


using System;
using System.Threading.Tasks;
using Microsoft.Owin;
using Owin;

[assembly: OwinStartup( typeof( OWINDemo.Startup ) )]

namespace OWINDemo {
  public class Startup {
    public void Configuration( IAppBuilder app ) {
      app.Run( context => {
        context.Response.ContentType = "text/plain";
        return context.Response.WriteAsync( "Hello from OWIN !" );
      } );

    }
  }
}

 

  • 按F5,便會啟動browser:

image

  • 換OWIN Host,改用現成的 OWINHost.exe,先用Nuget下載 OwinHost

image

下載下來之後,會有一個OwinHost.exe存在\packages\OwinHost.2.1.0\tools\資料夾

  • 改用OwinHost.exe來裝載

image

  • 設定想用的port與參數

image

  • F5

image

 

2014年2月24日 星期一

在ASP.NET Web Site啟用Friendly Url

 

Tool:Visual Studio 2013 Ultimate
OS:Windows 8.1
.NET Framework : 4.5.1

在ASP.NET Web Site啟用Friendly Url步驟

  • New Web Site

image

  • 加入一個Web Form,default.aspx

image

  • 加一個連結,href指向"Manage"

image

  • 加一個Manage.aspx

image

  • 設定h1

image

  • Manage NuGet Package,下載 Microsoft.AspNet.FriendlyUrls.Core

image

  • 加入一個Global.asax

 

 

image

  • 加code:

 

<%@ Application Language="C#" %>
<%@ Import Namespace="Microsoft.AspNet.FriendlyUrls" %>

<script runat="server">

    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        var routes = System.Web.Routing.RouteTable.Routes;
        var settings = new Microsoft.AspNet.FriendlyUrls.FriendlyUrlSettings( );
        settings.AutoRedirectMode = Microsoft.AspNet.FriendlyUrls.RedirectMode.Permanent;
        routes.EnableFriendlyUrls( settings );
    }

image

  • Test,
image
  • URL部份換掉了,選Manage

image

  • URL換掉了

image

2014年2月19日 星期三

在WebSite使用ASP.NET Web API

Tool:Visual Studio 2013 Ultimate
OS:Windows 8.1
.NET Framework : 4.5.1

在Visual Studio 2013 開發Web API時,若採用Web Site方式建立網站,預設沒有輔助功能可以快速建立Web API,以下步驟說明如何在WebSite建立及使用Web API

  • New Web Site

image

  • Empty

image

  • NuGet

image

image

image

 

image

image

image

image

image

Code:

<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web.Http" %>
<script RunAt="server">

    void Application_Start( object sender , EventArgs e ) {
        // Code that runs on application startup
        System.Web.Http.GlobalConfiguration.Configure( config =>
               config.Routes.MapHttpRoute(
                  name: "DefaultApi" ,
                  routeTemplate: "api/{controller}/{id}" ,
                  defaults: new { id = System.Web.Http.RouteParameter.Optional }
              ) );
    }

image

  • Page_Load

 

protected void Page_Load( object sender , EventArgs e ) {
  HttpClient client = new HttpClient( );
  client.BaseAddress = new Uri( "http://localhost:18541" );

  HttpResponseMessage resp = client.GetAsync( "api/values" ).Result;
  IEnumerable<string> data = null;
  if ( resp.IsSuccessStatusCode ) {
    data = resp.Content.ReadAsAsync<IEnumerable<string>>( ).Result;

  }

  foreach ( var item in data ) {
    Response.Write( item );
    Response.Write( "<br/>" );
  }
}

 

  • Test

image

 

image

2013年12月21日 星期六

R.I.P. EntityDataSource


Tool:Visual Studio 2013 Ultimate
OS:Windows Server 2012
.NET Framework : 4.5.1



此篇文章探討的問題,有一新解法,請參考這篇文章 http://vmiv.blogspot.tw/2014/02/entitydatasource-resurrected.html

在VS2013 Web Forms Web Site使用EntityDataSource發生一些錯誤。重現錯誤:
  • New - ASP.NET WebForms Web Site
  • Add Edmx
image
  • from db
image

  • 選db
image
  • 選EF6
image
  • 選table
image
  • Add ASPX
image
  • 加一個GridView,新增Data Source
image
  • 選 Entity
image
  • 下一個畫面就GG了….
image
找尋許久,最後,根據這篇討論串 https://entityframework.codeplex.com/discussions/434936
結論就是EF6不支援 EntityDatasource了,Orz,要改用Entity Framework 5版本才行。舊專案沒事不要亂升級版本啊!!
  • 重複上面的步驟,但選Entity Framework 5版:
image
  • 在相同的地方,一樣GG….. Orz * 2,
不是說Entity Framework 5有支援的嗎??
試了半天,有個愚笨的解法:
  • 預設使用T4產生Entity Framework相關類別,先改回Legacy ObjectContext,刪到所有TT檔:
image
  • 設定Code Generation Strategy為Legacy ObjectContext
image
  • 重Build
  • GridView->Choose Data Source->Entity
image
  • 這回就沒顯示錯誤訊息了
image
image
  • 工具產生的tag如下
<asp:GridView ID="GridView1" runat="server" DataSourceID="EntityDataSource1"></asp:GridView>
   <asp:EntityDataSource runat="server" ID="EntityDataSource1" DefaultContainerName="pubsEntities" ConnectionString="name=pubsEntities" EnableFlattening="False" EntitySetName="stores"></asp:EntityDataSource>
  • RUN ASPX也沒問題
image
  • 若想要改回用T4範本,在此時可以選 Add Code Generation Item
image
  • 加入T4 範本
image
  • 可正常執行
image
  • 不過,設計工具就又失效了,後續想修改就自己敲Tag吧   Orz…誰記得這些tag要怎麼敲啊?
image

總網頁瀏覽量